Perché il container docker non parte all'avvio con lo script upstart su Ubuntu 12.04?


15

Utilizzando le istruzioni per l'avvio automatico di Docker su Linode VPS che esegue Ubuntu 12.04 e Docker 0.8.1, il contenitore specificato non si avvia al riavvio.

Una volta avviato, sono in grado di farlo

~$ sudo start [service-name]

e tutto procede come previsto, ma vorrei anche contenitore per riavviare dopo un riavvio.

Lo script nel tutorial non è progettato per gestire i riavvii?

Il file / etc / default / docker contiene una riga:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf è direttamente dalla pagina mobile:

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
Quali sono i contenuti del tuo script upstart e /etc/default/docker?
Bruno Pereira,

Risposte:


6

Ad un certo punto negli ultimi due mesi, lo script di avvio nel tutorial è stato modificato per rimuovere il loop in attesa dell'avvio della finestra mobile. Ho rimosso il ciclo dai miei script di avvio e i miei contenitori ora si riavvia correttamente dopo un riavvio.

Il mio script /etc/init/service-name.conf ora appare così:

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

Non sono sicuro di cosa ci fosse di sbagliato in quel ciclo. Forse stava indicando il file sbagliato sul mio sistema, anche se non ho apportato modifiche all'installazione docker predefinita. Per ora, sono solo felice che la correzione abbia comportato la rimozione del codice anziché qualche complicata soluzione.


Sarebbe più upstart-ish per cambiare il lavoro docker per emettere un segnale (docker-avviato) e fare in modo che quel segnale avvii l'avvio dei lavori contenitore.
MikeyB,

Non è possibile arrestare il contenitore in questo modo emettendo il comando stop service-name. Sto affrontando questo problema :(
Ahmed Al Hafoudh,

3

Per chiunque usi Ubuntu 14.04 apt-get flavour di docker. Devi solo cambiare lo script di avvio per attendere su "docker.io" e non "docker" in questo modo:

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

Sto usando Ubuntu 13.10 come host e ho avuto lo stesso problema. Ho scoperto che docker installa uno script rc per docker /etc/init.d/dockere allo stesso tempo installa uno script upstart in /etc/init/docker.conf. Ho dovuto solo rimuovere lo script rc /etc/init.d/dockerper far scomparire questo problema.

Spero che questo funzioni anche per te.


Purtroppo, questo non ha funzionato per me.
jody,

0
DOCKER_OPTS="-r=false"

Ciò significa: non riavviare i contenitori precedentemente in esecuzione.

Rimuovere l' -ropzione o cambiarla in true.


2
Giusto, ma il punto è riavviare il contenitore handle upstart, non il demone docker. Se il daemon docker avvia il contenitore al riavvio, il processo non può essere gestito da upstart.
jody,

0

/var/run/docker.sockè un socket, quindi è necessario utilizzarlo -Squando si verifica l'esistenza:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.