도커-컨테이너에서 자동 다시 시작을 어떻게 비활성화합니까?


156

로 자동 다시 시작을 활성화 할 수 --restart=always있지만 컨테이너를 중지 한 후 해당 속성을 끄려면 어떻게해야합니까?

나는 일반적으로 웹 서버를 실행하고 일반적으로 포트 80을 매핑합니다.

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

그러나 최신 버전의 이미지를 실행하고 싶을 때도 있지만 이전 컨테이너를 유지하고 싶습니다. 문제는로 여러 개의 컨테이너가있는 경우 --restart=always호스트의 포트 80에 대해 모두 경쟁하기 때문에 컨테이너 중 하나 (임의?) 만 시작한다는 것입니다.

답변:


326

당신은 사용할 수 있습니다 --restart=unless-stopped@Shibashis가 언급 한대로이 옵션을 하거나 재시작 정책을 업데이트 (도커 1.11 이상이 필요함).

참고 항목 에 대한 문서docker update도커 다시 시작 정책을 .

docker update --restart=no my-container

기존 컨테이너의 재시작 정책을 업데이트합니다 ( my-container).


69
docker update --restart=no $(docker ps -a -q)모든 컨테이너를 업데이트하는 데 사용 :-)
Mark Mooibroek

33

로 컨테이너를 시작할 수 있습니다 --restart=unless-stopped.


22

모든 자동 재시작 (데몬) 컨테이너를 비활성화하려면 아래를 사용하십시오.

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

12

컨테이너를 다시 시작하는 떼가있는 경우 다시 시작 옵션에 관계없이 떼를 시작하거나 rm 한 컨테이너가 다시 시작됩니다. 그것은 버그가 아닌 기능입니다.

잊어 버린 서비스를 실행하고 있지 않은지 확인하십시오.

docker service ls

그런 다음 서비스를 중지 할 수 있습니다

docker service rm <service id discovered with previous command>

1
ls오류 발생Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.