답변:
분명히 Docker 컨테이너 를 Docker 1.2에서 자동 시작하는 현재 방법 은 재시작 정책 을 사용 하는 것 입니다. 이것은 Docker가 컨테이너를 시작할 때 컨테이너 시작과 컨테이너가 다시 시작될 때 컨테이너를 다시 시작하는 방법을 제어합니다. 지금까지 'always'옵션을 사용했으며 시스템 부팅시 Docker가 컨테이너를 자동 시작하는지 확인할 수 있습니다.
sudo docker run --restart=always -d myimage
재시작 정책 Docker run에서 --restart 플래그를 사용하면 종료시 컨테이너를 재시작해야하는 방식에 대한 재시작 정책을 지정할 수 있습니다.
no-컨테이너가 종료 될 때 컨테이너를 다시 시작하지 않습니다.
실패시-종료 상태가 아닌 0으로 컨테이너를 종료 한 경우에만 컨테이너를 다시 시작하십시오.
always-항상 종료 상태에 관계없이 컨테이너를 다시 시작하십시오.
또한 실패시 정책을 사용할 때 Docker가 컨테이너를 다시 시작하려고 시도하는 최대 횟수를 지정할 수도 있습니다. 기본적으로 Docker는 컨테이너를 다시 시작하려고 영원히 시도합니다.
$ sudo docker run --restart=always redis
컨테이너가 종료되면 Docker가 다시 시작하도록 항상 재시작 정책으로 redis 컨테이너를 실행합니다.
$ sudo docker run --restart=on-failure:10 redis
그러면 실패시 재시작 정책과 최대 재시작 횟수가 10 인 redis 컨테이너가 실행됩니다. redis 컨테이너가 0이 아닌 종료 상태로 10 번 이상 종료하면 Docker는 컨테이너 재시작을 중단합니다. 최대 재시작 제한을 제공하는 것은 장애 조치 정책에만 유효합니다.
unless-stopped
이 추가되었습니다. 작동 always
하지만 컨테이너가 중지되고 시스템이 재부팅되거나 도커 데몬이 다시 시작되면 컨테이너가 다시 시작되지 않습니다. 4 개 옵션의 좋은 쓰기까지 여기를 참조하십시오 blog.codeship.com/...
docker
이를 지원 하려면 데몬이 자동 시작되어야합니다.
Docker에는 upstart 및 systemd로 수행하는 방법을 설명하는 이 페이지 가 있습니다. Docker에게는 옳지 않은 것처럼 보입니다. 그들의 해결책은 run docker start
입니다. 이미 컨테이너를 이미 만들었다 고 가정합니다. 당신이 중 하나를 할 거라고 생각 docker run --rm
은 기본적으로 당신은 다른 아무것도하지 않을 경우 신출내기 스크립트 (이미지에서 새로운 프로세스 및 컨테이너처럼 치료) 또는 단지 고정 표시기 데몬이 부팅 컨테이너 자체를 다시 시작하자 (로 ). Upstart는 프로세스를 쉽게 시작 / 중지 할 수 있다는 장점이 있지만, docker의 시작 / 중지로도 얻을 수 있습니다!
upstart 스크립트가 작동하기 전에 사용자가 강제로 모든 올바른 포트 / 볼륨 바인딩을 가진 컨테이너를 수동으로 작성하는 것이 이상하다고 생각합니다.
그러나 Docker에게는 옳지 않은 느낌입니다.
왜 안돼?
나는 이것을 위해 감독자를 사용하여 큰 성공을 거두었습니다.
알고있는 것을 사용하고, 작동하는 것을 사용하고, 쉽게 유지 관리하고 이해할 수있는 것을 사용하십시오.
--rm
않습니까?
--rm
여기에 관련이 있는지 잘 모르겠습니다 .
docker
을 대신 lxc
하거나 openvz
이있는 lxc.start.auto = 1
및 vzctl set --onboot yes
. 또한 ESXi 및 기타 가상화 솔루션에는 이러한 기능이 포함되어 있습니다. Lawrence와 마찬가지로 도커 사용자는 모든 플랫폼에서 동일한 지식으로 동일한 문제를 해결할 수 있어야하므로 자동 시작 기능이 배포판 방식으로 구현되어야한다고 생각하지 않습니다.