¿Por qué el contenedor Docker no comienza en el arranque con script de arranque en Ubuntu 12.04?

15

Usando instrucciones para el inicio automático de Docker en Linode VPS que ejecuta Ubuntu 12.04 y Docker 0.8.1, el contenedor especificado no se inicia al reiniciar.

Una vez arrancado, puedo

~$ sudo start [service-name]

y todo sale según lo planeado, pero también me gustaría reiniciar el contenedor después de un reinicio.

¿El script en el tutorial no está diseñado para manejar reinicios?

El archivo / etc / default / docker contiene una línea:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf es directo desde la página acoplable:

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
jody
fuente
2
¿Cuáles son los contenidos de su script de inicio y /etc/default/docker?
Bruno Pereira

Respuestas:

6

En algún momento durante los últimos meses, el script de inicio en el tutorial se cambió para eliminar el bucle y esperar a que Docker se inicie. Eliminé el bucle de mis scripts de inicio y mis contenedores ahora se reinician correctamente después de un reinicio.

Mi script /etc/init/service-name.conf ahora se ve así:

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

No estoy seguro de lo que estaba mal con ese bucle. Tal vez estaba apuntando al archivo incorrecto en mi sistema, aunque no hice ningún cambio en la instalación predeterminada de la ventana acoplable. Por ahora, estoy feliz de que la solución implicara la eliminación del código en lugar de una solución complicada.

jody
fuente
Sería más adictivo cambiar el trabajo del acoplador para emitir una señal (iniciado por el acoplador) y hacer que esa señal active los trabajos del contenedor para que comiencen.
MikeyB
No puede detener el contenedor de esta manera emitiendo un comando stop service-name. Estoy enfrentando este problema :(
Ahmed Al Hafoudh
3

Para cualquiera que use ubuntu 14.04 apt-get sabor de docker. Solo necesita cambiar el script de inicio para esperar en "docker.io" y no en "docker" de esta manera:

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
falcon006
fuente
1

Estoy usando Ubuntu 13.10 como host y tuve el mismo problema. Descubrí que docker instala un script rc para docker /etc/init.d/dockery al mismo tiempo instala un script de inicio en /etc/init/docker.conf. Solo tuve que eliminar el script rc /etc/init.d/dockerpara que este problema desapareciera.

Espero que esto también funcione para ti.

Sameer Naik
fuente
Lamentablemente, este no funcionó para mí.
jody
0
DOCKER_OPTS="-r=false"

Esto significa: no reinicie los contenedores que se ejecutaban anteriormente.

Elimine la -ropción o cámbiela a verdadero.

MikeyB
fuente
2
Correcto, pero el punto es hacer que el contenedor de reinicio se reinicie, no el demonio docker. Si el demonio de Docker inicia el contenedor al reiniciar, el proceso no puede ser administrado por el arranque.
jody
0

/var/run/docker.sockes un zócalo, por lo que debe usarlo -Spara probar la existencia

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
j.szwedko
fuente