어떤 이미지 dockerd가 자동으로 시작되나요?

어떤 이미지 dockerd가 자동으로 시작되나요?

Ubuntu 상자에서 도커 서비스를 다시 시작한 후에는 service docker restart일부 컨테이너가 시작될 것으로 예상하지 못했습니다.

왜 그런 겁니까? 어떤 구성 파일/저장소/어떤 이미지를 시작해야 하는지에 대한 정보를 담고 있는 것이 무엇입니까?

로 나열할 때 이미지가 너무 많습니다(~50개) docker images. 하지만 내가 를 시작하면 그 중 8개만 시작됩니다 dockerd. 왜? 이것을 어떻게 바꾸나요?

감사해요.

답변1

개별 컨테이너의 경우 적용할 수 있는 다시 시작 정책이 있습니다. 이는 docker run --restart=...컨테이너를 시작할 때 설정되거나 restart: ...compose yml 파일의 한 줄로 설정됩니다. 다음을 사용하여 기존 컨테이너의 다시 시작 정책을 변경할 수 있습니다.

$ docker update --restart=... ${container_name_or_id}

모든 컨테이너와 해당 재시작 정책을 나열하려면 bash에서 다음을 실행할 수 있습니다.

$ docker container ls -q | \
  xargs docker container inspect --format \
          '{{ .Name }}: {{.HostConfig.RestartPolicy.Name}}'

그만큼정책 다시 시작당신은 사용할 수 있습니다 :

아니요 컨테이너가 종료될 때 자동으로 다시 시작하지 마세요. 이것이 기본값입니다.

실패 시[:최대 재시도] 컨테이너가 0이 아닌 종료 상태로 종료되는 경우에만 다시 시작하세요. 선택적으로 Docker 데몬이 시도하는 재시작 재시도 횟수를 제한합니다.

언제나 종료 상태에 관계없이 항상 컨테이너를 다시 시작하십시오. Always를 지정하면 Docker 데몬은 컨테이너를 무기한 다시 시작하려고 시도합니다. 컨테이너의 현재 상태에 관계없이 컨테이너는 데몬 시작 시 항상 시작됩니다.

멈추지 않는 한 종료 상태에 관계없이 항상 컨테이너를 다시 시작하지만, 컨테이너가 이전에 중지된 상태였던 경우 데몬 시작 시 시작하지 마세요.

다시 시작 정책을 사용하면 always컨테이너를 의도적으로 중지했더라도 docker 데몬이 다시 시작된 후 예기치 않은 컨테이너 다시 시작이 발생합니다. 이러한 이유로 저는 일반적으로 unless-stopped다시 시작 정책을 사용하여 독립형 컨테이너를 만듭니다.


docker swarm 모드를 사용하는 경우 대상 상태가 현재 상태와 일치하지 않을 때마다 서비스가 자동으로 새 컨테이너를 시작합니다. 랩톱에서 자주 볼 수 있는 단일 노드 스웜 클러스터의 경우 이는 Docker를 다시 시작할 때 컨테이너가 다시 시작된다는 것을 의미하지만 실행 중인 컨테이너를 중지하거나 삭제하는 경우에도 마찬가지입니다.

서비스를 영구적으로 중지하고 제거합니다.

$ docker service ls # to show the running services
$ docker service rm ${service_id_or_name}

서비스가 복제 모드로 구성되어 있고 서비스를 삭제하지 않고 일시적으로 중지하려는 경우 대상 복제본을 0으로 업데이트할 수 있습니다.

$ docker service update --replicas=0 ${service_id_or_name}

그리고 서비스는 스택의 일부로 배포될 수 있습니다. 전체 스택을 제거하려면:

$ docker stack ls # to show the defined stacks
$ docker stack rm ${stack_id_or_name}

답변2

이는 일부 컨테이너가 RestartPolicy를 항상으로 설정했음을 의미합니다. 이는 컨테이너가 항상 켜져 있어야 함을 의미합니다. 문제의 컨테이너를 검사하고 특히 RestartPolicy 값을 확인하세요.

$ docker inspect container-name

--restart이는 일반적으로 항상 플래그를 사용하여 컨테이너를 생성할 때 발생합니다 .

컨테이너가 자동 시작되지 않도록 하려면 다음 명령을 사용하세요.

$ docker update --restart=no container-name

이를 해결하는 또 다른 방법은 컨테이너를 시작할 때 RestartPolicy를 중단되지 않는 상태로 설정하는 것입니다. 전체 문서를 읽을 수 있습니다도커 업데이트

답변3

와 같은 docker 재시작 정책을 살펴보십시오 --restart always. 나는 당신의 컨테이너 중 일부가 그것을 사용하고 있다고 추측합니다. docker에 대한 서비스 시작 스크립트를 확인하세요. 를 사용하여 docker ps -a --no-trunc전체 목록을 볼 수 있습니다.

답변4

이미지는 자동으로 시작되지 않지만 컨테이너는 시작됩니다.

service docker restart용기 에중지됨또는시작했다플래그가 있는 경우 --restart always다시 시작하면 자동으로 다시 시작됩니다. 를 통해 확인하세요 docker ps -a.

컨테이너를 시작하지 않으려면( --restart always플래그가 있는 컨테이너라도) 간단히 제거 docker rm container하거나 docker-compose down.

관련 정보