Por que o contêiner do Docker não inicia na inicialização com o script upstart no Ubuntu 12.04?

15

Usando instruções para o Docker auto-start no Linode VPS executando o Ubuntu 12.04 e o Docker 0.8.1 , o contêiner especificado não inicia na reinicialização.

Uma vez iniciado, posso

~$ sudo start [service-name]

e tudo corre como planejado, mas eu também gostaria de contêiner para reiniciar após uma reinicialização.

O script do tutorial não foi projetado para lidar com reinicializações?

O arquivo / etc / default / docker contém uma linha:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf é diretamente da página do docker:

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
    
por jody 07.03.2014 / 15:05

5 respostas

6

Em algum momento nos últimos dois meses, o script inicial do tutorial foi alterado para remover o loop e aguardar o início da janela de encaixe. Eu removi o loop dos meus scripts iniciados e meus contêineres agora reiniciam corretamente após a reinicialização.

Meu script /etc/init/service-name.conf agora é assim:

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

Não tenho certeza do que estava errado com esse loop. Talvez estivesse apontando para o arquivo errado no meu sistema, embora eu não tenha feito nenhuma alteração na instalação padrão do docker. Por enquanto, estou feliz que a correção envolveu a remoção de código, em vez de uma solução complicada.

    
por 04.05.2014 / 17:25
3

Para quem usa o ubuntu 14.04 apt-get flavor do docker. Você só precisa alterar o script de inicialização para aguardar "docker.io" e não "docker" da seguinte forma:

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
    
por 25.07.2014 / 20:11
1

Estou usando o Ubuntu 13.10 como host e tive o mesmo problema. Descobri que o docker instala um script rc para o docker em /etc/init.d/docker e, ao mesmo tempo, instala um script upstart em /etc/init/docker.conf. Eu só tive que remover o script rc /etc/init.d/docker para esta questão ir embora.

Espero que isso funcione para você também.

    
por 13.04.2014 / 10:44
0
DOCKER_OPTS="-r=false"

Isso significa: não reinicie os contêineres em execução anteriormente.

Remova a opção -r ou altere para verdadeiro.

    
por 01.05.2014 / 20:58
0

/var/run/docker.sock é um soquete, então você precisa usar -S ao testar a existência:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
    
por 01.04.2015 / 21:36