[docker] 도커-컨테이너에서 자동 다시 시작을 어떻게 비활성화합니까?
로 자동 다시 시작을 활성화 할 수 --restart=always
있지만 컨테이너를 중지 한 후 해당 속성을 끄려면 어떻게해야합니까?
나는 일반적으로 웹 서버를 실행하고 일반적으로 포트 80을 매핑합니다.
docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash
그러나 최신 버전의 이미지를 실행하고 싶을 때도 있지만 이전 컨테이너를 유지하고 싶습니다. 문제는로 여러 개의 컨테이너가있는 경우 --restart=always
호스트의 포트 80에 대해 모두 경쟁하기 때문에 컨테이너 중 하나 (임의?) 만 시작한다는 것입니다.
답변
당신은 사용할 수 있습니다 --restart=unless-stopped
@Shibashis가 언급 한대로이 옵션을 하거나 재시작 정책을 업데이트 (도커 1.11 이상이 필요함).
참고 항목 에 대한 문서docker update
및 도커 다시 시작 정책을 .
docker update --restart=no my-container
기존 컨테이너의 재시작 정책을 업데이트합니다 ( my-container
).
답변
로 컨테이너를 시작할 수 있습니다 --restart=unless-stopped
.
답변
모든 자동 재시작 (데몬) 컨테이너를 비활성화하려면 아래를 사용하십시오.
docker update --restart=no $(docker ps -a -q)
SINGLE 컨테이너를 다시 시작하지 않으려면 다음을 사용하십시오.
docker update --restart=no the-container-you-want-to-disable-restart
합리적인 :
Docker는 컨테이너가 종료 될 때 또는 Docker가 다시 시작될 때 컨테이너가 자동으로 시작되는지 여부를 제어하는 다시 시작 정책을 제공합니다. Docker가 키 서비스를 실행할 때 매우 유용합니다.
노트
docker-compose를 사용하는 경우 이것이 유용 할 수 있습니다.
restart no는 기본 재시작 정책이며 어떤 상황에서도 컨테이너를 재시작하지 않습니다. always가 지정되면 컨테이너가 항상 다시 시작됩니다. 종료 코드가 실패시 오류를 표시하면 실패시 정책이 컨테이너를 다시 시작합니다.
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
restart: always
답변
컨테이너를 다시 시작하는 떼가있는 경우 다시 시작 옵션에 관계없이 떼를 시작하거나 rm 한 컨테이너가 다시 시작됩니다. 그것은 버그가 아닌 기능입니다.
잊어 버린 서비스를 실행하고 있지 않은지 확인하십시오.
docker service ls
그런 다음 서비스를 중지 할 수 있습니다
docker service rm <service id discovered with previous command>