도커 컨테이너 중지/삭제하지 않고 업데이트 하는 방법이 있을까요 ?
일반적인 도커 컨테이너의 경우 쉘에서
docker compose down
docker compose pull
docker compose up -d
를 순서대로 실행하면 되는데... 문제는 업데이트 하려는 컨테이너가 npm 일 때 입니다.
쉘 또는 WebGUI 에 npm 을 통해서 접속했을 때
docker compose down
하는 순간 접속이 끊어져 버려서 (당연하겠지요 ? ㅎㅎ) 다음 명령어를 실행 할 수가 없고.
실행되는 상태에서
docker compose pull
docker compose restart
하면 업데이트가 반영되지 않는것 같고요..
커맨드라인 기준 해결하는 방법이 있을까요 ?
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
npm 이 멈춰도 스크립트의 두번째/세번째 줄이 이어서 실행될까요 ? 뭐 해보면 알겠지만서도...
dockage 화면에서 updatte 누르면 pull 을 먼저하고, 다음에 recreate 라는 화면이 뜨면서
접속이 일단 끊어지고 다시 연결은 되네요.. docker 명령어중에 recreate 에 해당하는 명령어는 못찾겠구요. ㅎㅎ
sh로 npm 시작 문구까지 넣어서 업데이트 하고 있네요 ㅎㅎ.
순차적으로 실행하더라고요.. 끝나면 다음 문구..
docker compose pull && docker compose down && docker compose up -d
한번에 명령어를 입력하시면 됩니다.
위 명령어를 sh파일로 만들어두시면 편리합니다.
--- 감사합니다. --- ㅎㅎ
일단 컨테이너는 업데이트 라는게 사실상 이미지가 업데이트 입니다.
그래서 컨테이너는 업데이트가 사실상 없는게 맞습니다.
간단히는, "컨테이너 = 이미지(읽기전용) + 휘발성 저장소(읽고, 쓰기)" 라고 할 수 있습니다.
업데이트 하려면, 이미지(읽기전용) 부분을 보통 업데이트를 하게 됩니다.
watchtower를 이용해서 주기적으로 자동으로 이미지를 업데이트 되도록 하시면 신경쓸일이 거의 없을거에요.
watchtower는 사용하지 않고 있습니다.
제가 watchtower를 꺼낸 이유가 바로 말씀하신 부분 때문입니다.
watchtower를 쓰면, 매번 docker compose down 후 pull 하고 다시 up 할 필요가 없다는 얘기 입니다.
그리고 제목의 질문은 일단 불가능 합니다.
이미지 업데이트와 관련된 모든 작업은 컨테이너를 멈춘다음에 진행이 가능 하므로, 서비스 중단은 필수 입니다.
watchtower 쓰면, 시스템 유휴시간에 맞춰 자동으로 업데이트를 하게 되므로, 그나마 중단 시간을 느끼지 못하게 업데이트가 가능하기에 watchtower를 추천하는 이유이구요.
cmt alert