시스템 부팅시 도커 컨테이너를 자동으로 시작하는 좋은 방법은 무엇입니까?
우분투 14.04 에서이 작업을 수행하는 바람직한 방법이 있습니까?
supervisord
과거에는 웹 앱을 자동 시작하는 데 사용 했습니다. 그러나 Docker에게는 옳지 않은 느낌입니다.
답변
분명히 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는 컨테이너 재시작을 중단합니다. 최대 재시작 제한을 제공하는 것은 장애 조치 정책에만 유효합니다.
답변
Docker에는 upstart 및 systemd로 수행하는 방법을 설명하는 이 페이지 가 있습니다. Docker에게는 옳지 않은 것처럼 보입니다. 그들의 해결책은 run docker start
입니다. 이미 컨테이너를 이미 만들었다 고 가정합니다. 당신이 중 하나를 할 거라고 생각 docker run --rm
은 기본적으로 당신은 다른 아무것도하지 않을 경우 신출내기 스크립트 (이미지에서 새로운 프로세스 및 컨테이너처럼 치료) 또는 단지 고정 표시기 데몬이 부팅 컨테이너 자체를 다시 시작하자 (로 ). Upstart는 프로세스를 쉽게 시작 / 중지 할 수 있다는 장점이 있지만, docker의 시작 / 중지로도 얻을 수 있습니다!
upstart 스크립트가 작동하기 전에 사용자가 강제로 모든 올바른 포트 / 볼륨 바인딩을 가진 컨테이너를 수동으로 작성하는 것이 이상하다고 생각합니다.
답변
그러나 Docker에게는 옳지 않은 느낌입니다.
왜 안돼?
나는 이것을 위해 감독자를 사용하여 큰 성공을 거두었습니다.
알고있는 것을 사용하고, 작동하는 것을 사용하고, 쉽게 유지 관리하고 이해할 수있는 것을 사용하십시오.