Ubuntu 12.04에서 부팅시 wstart 스크립트로 도커 컨테이너가 시작되지 않는 이유는 무엇입니까?


15

Ubuntu 12.04 및 Docker 0.8.1을 실행하는 Linode VPS에서 Docker 자동 시작 에 대한 지침을 사용 하면 지정된 컨테이너가 재부팅시 시작되지 않습니다.

부팅되면

~$ sudo start [service-name]

모든 것이 계획대로 진행되지만 재부팅 후 컨테이너를 다시 시작하고 싶습니다.

학습서의 스크립트가 재부팅을 처리하도록 설계되지 않았습니까?

/ etc / default / docker 파일에는 한 줄이 있습니다 :

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf는 도커 페이지에서 직접 제공됩니다.

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script

2
upstart 스크립트의 내용은 무엇입니까 /etc/default/docker?
Bruno Pereira

답변:


6

지난 몇 달 동안 어느 시점에서 튜토리얼의 upstart 스크립트가 docker가 시작될 때까지 루프를 제거하도록 변경되었습니다. upstart 스크립트에서 루프를 제거하고 재부팅 후 컨테이너가 올바르게 다시 시작됩니다.

내 /etc/init/service-name.conf 스크립트는 다음과 같습니다.

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script

그 루프에 어떤 문제가 있는지 잘 모르겠습니다. 기본 도커 설치를 변경하지 않았지만 시스템에서 잘못된 파일을 가리키고있을 수 있습니다. 지금은 복잡한 해결 방법 대신 코드 제거와 관련된 수정 프로그램에 만족합니다.


Docker 작업을 변경하여 신호를 내보내고 (docker-started) 해당 신호가 컨테이너 작업을 시작하도록 트리거하는 것이 더 신선합니다.
MikeyB

command를 실행하여이 방법으로 컨테이너를 중지 할 수 없습니다 stop service-name. 나는이 문제에 직면하고있다 :(
Ahmed Al Hafoudh

3

우분투 14.04 apt-get 도커의 풍미를 사용하는 사람. "docker"가 아닌 "docker.io"를 기다리려면 시작 스크립트를 변경하면됩니다.

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

1

호스트로 Ubuntu 13.10을 사용하고 있으며 동일한 문제가 있습니다. docker가 docker 용 rc 스크립트를 /etc/init.d/docker설치하고 동시에 /etc/init/docker.conf에 upstart 스크립트를 설치한다는 것을 알았습니다 . /etc/init.d/docker이 문제를 해결하기 위해 rc 스크립트를 제거해야했습니다 .

이것이 당신에게도 효과가 있기를 바랍니다.


슬프게도, 이것은 나를 위해 작동하지 않았습니다.
jody

0
DOCKER_OPTS="-r=false"

이는 다음을 의미합니다. 이전에 실행중인 컨테이너를 다시 시작하지 마십시오.

-r옵션을 제거 하거나 true로 변경하십시오.


2
그러나 요점은 docker 데몬이 아닌 upstart 핸들 컨테이너 재시작을 갖는 것입니다. docker 데몬이 재부팅 할 때 컨테이너를 시작하면 upstart로 프로세스를 관리 할 수 ​​없습니다.
jody

0

/var/run/docker.sock소켓이므로 -S존재 여부를 테스트 할 때 사용해야합니다 .

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.