programing

도커: 이미 만든 컨테이너에 다시 시작 정책 추가

newsource 2023. 8. 13. 09:45

도커: 이미 만든 컨테이너에 다시 시작 정책 추가

도커는 예를 들어 재부팅 시 컨테이너 재시작을 처리하기 위해 재시작 정책이라는 것을 추가했습니다.

이것은 매우 유용하지만, restart policy 명령은 다음과 같이 작동합니다.docker run그리고 아닌docker start그래서 제 질문은:

이전에 이미 생성된 컨테이너에 재시작 정책을 추가할 수 있는 방법이 있습니까?

도커의 최신 버전(1.11 기준)에는 다음과 같은 명령이 있습니다.

docker update --restart=always <container>

RestartPolicy를 수정하는 두 가지 방법이 있습니다.

  • 컨테이너 ID를 찾아 전체 도커 서비스를 중지하고 /var/lib/docker/Containers/Containers_를 수정합니다.ID/hostconfig.json을 선택하고 재시작 정책 -> 이름을 "항상"으로 설정한 후 도커 서비스를 시작합니다.
  • docker commit컨테이너를 새 이미지로 만들고 현재 컨테이너를 중지 및 설정한 다음 이미지로 새 컨테이너를 시작합니다.

사용.--restart=always정책은 재부팅 시 기존 컨테이너의 재시작을 처리합니다.

문제는 여러 컨테이너가 있는 경우--restart=always도커에서 설명한 대로 최신 버전의 이미지를 실행할 때 컨테이너에서 자동 검색을 비활성화하려면 어떻게 해야 합니까?

컨테이너가 있을 때 자동으로 제거를 시도하는 byput 옵션docker run --rm또한 문제가 될 것입니다.--restart=always서로 상충되는 정책입니다.

$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm

따라서 이 경우에는 중지되지 않은 경우 정책 재시작이라는 다른 옵션을 선택하는 것이 좋습니다.

$ docker run --rm --restart unless-stopped <image>

정책은 다음과 충돌하지 않습니다.docker run --rm그러나 도커 설명서에서 설명한 바와 같이:

와 유사합니다.--restart=always컨테이너가 (수동으로 또는 다른 방식으로) 중지되면 Docker 데몬이 재시작된 후에도 재시작되지 않습니다.

그래서 이것을 사용할 때.--restart unless-stopped터미널을 닫을 때 실수로 중지된 경우 다시 시작이 작동하는지 확인하려면 다음과 같이 다른 터미널에서 한 번 수행합니다.

$ docker ps
$ docker restart <container>

이전 셸에서 킬링 프로세스가 끝날 때까지 기다렸다가 셸을 닫고 그냥 나갑니다(종료하지 마십시오).
그리고 컨테이너가 여전히 실행 중인지 여부를 나머지 터미널에서 다시 확인합니다.

$ docker ps

아직 실행 중인 경우 안전하게 재부팅하고 응용 프로그램이 다시 시작되고 있는지 다시 확인하여 여러 용기를 사용하지 않고 도커가 깨끗한지 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/26852321/docker-add-a-restart-policy-to-a-container-that-was-already-created