Korzystając z instrukcji automatycznego uruchamiania Dockera na Linode VPS z systemem Ubuntu 12.04 i Docker 0.8.1, określony kontener nie uruchamia się przy ponownym uruchomieniu.
Po uruchomieniu jestem w stanie
~$ sudo start [service-name]
i wszystko idzie zgodnie z planem, ale chciałbym również zrestartować pojemnik po ponownym uruchomieniu.
Czy skrypt w samouczku nie jest przeznaczony do obsługi restartów?
Plik / etc / default / docker zawiera jeden wiersz:
DOCKER_OPTS="-r=false"
/etc/init/service-name.conf jest prosto ze strony dokera:
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
/etc/default/docker
?Odpowiedzi:
W pewnym momencie w ciągu ostatnich kilku miesięcy skrypt wstępny w samouczku został zmieniony, aby usunąć pętlę oczekującą na uruchomienie dokera. Usunąłem pętlę ze skryptów startowych, a moje pojemniki teraz ponownie uruchamiają się poprawnie po ponownym uruchomieniu.
Mój skrypt /etc/init/service-name.conf wygląda teraz tak:
Nie jestem pewien, co było nie tak z tą pętlą. Może wskazywał na niewłaściwy plik w moim systemie, chociaż nie wprowadziłem żadnych zmian w domyślnej instalacji dokera. Na razie cieszę się, że poprawka polegała na usunięciu kodu zamiast skomplikowanych obejść.
źródło
stop service-name
. Mam do czynienia z tym problemem :(Dla każdego, kto używa Ubuntu 14.04 apt-get smak dokera. Musisz tylko zmienić skrypt startowy, aby czekał na „docker.io”, a nie „docker” w taki sposób:
źródło
Używam Ubuntu 13.10 jako hosta i miałem ten sam problem. Odkryłem, że doker instaluje skrypt rc dla dokera w
/etc/init.d/docker
tym samym czasie instaluje skrypt upstart na /etc/init/docker.conf. Musiałem tylko usunąć skrypt rc,/etc/init.d/docker
aby ten problem zniknął.Mam nadzieję, że to również dla ciebie działa.
źródło
Oznacza to: Nie uruchamiaj ponownie uruchomionych wcześniej kontenerów.
Usuń
-r
opcję lub zmień ją na true.źródło
/var/run/docker.sock
jest gniazdem, więc musisz użyć go-S
podczas testowania istnienia:źródło