Jak automatycznie uruchomić kontener dokera przy ponownym uruchomieniu systemu?


46

Ponieważ hostowałem witrynę WordPress w kontenerach dokerów i chcę, aby te kontenery zawsze były uruchamiane podczas rozruchu, więc muszę to zrobić ręcznie.


jakiej wersji ubuntu używasz?
Maythux

za pomocą serwera Ubuntu 14.04
nayan tiwari

Zapytano o to na ServerFault .
Dan Dascalescu

Przekreślony. Wybierz jedną witrynę, nie wiele, do publikowania rzeczy.
Thomas Ward

Odpowiedzi:


34

Do tej pory nie sądzę, aby można to zrobić normalnie. Trudnym rozwiązaniem jest użycie zasady restartu

sudo docker run --restart=always -d your_image

Oznacza to, że za każdym razem, gdy się zamkniesz, spowoduje to zamknięcie kontenera, więc po uruchomieniu hosta prowadzi to do ponownego uruchomienia dokera.


kiedy
szukam

Nadal jest w fazie
Maythux

2
Dlaczego nie wykorzystać do tego możliwości systemu? zarówno początkujący, jak i systemowi poradzą sobie z tym doskonale
Reishin,

29

Bardzo częstym przypadkiem użycia jest dodanie zasady restartu do istniejącego kontenera.

Można to zrobić za pomocą następującego polecenia: docker update --restart {no,on-failure,unless-stopped,always} container_name

Więcej informacji: Docker - Automatyczne uruchamianie kontenerów


2
To doskonale rozwiązało mój problem! Miałem pojemnik z bazą danych i chciałem, aby zaczął się, gdy uruchomię komputer Mac. Dzięki określeniu, że jego obraz był zawsze restartowany (chyba że zatrzymany), załatwiło sprawę!
Colin

21

Ponieważ Ubuntu 15 obsługuje teraz systemd, przykład dla tego menedżera:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

Więcej dostępnych na stronie dokera

PS Całkiem urocza konfiguracja :)


4

To, co zrobiłem, to użyć plików Upstart.

Możesz znaleźć przykłady i inne rozwiązania na stronie Docker .

Utwórz plik taki jak ten w / etc / init:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

Uwaga: od wersji Docker 1.2 istnieją zasady restartowania, które mogą również pomóc w automatycznym restartowaniu kontenerów, gdy usługa dokowania jest uruchomiona (na przykład po rozruchu).

Osobiście używam marionetki, aby udostępnić moją stację roboczą, i używam tego modułu Docker do automatycznego tworzenia skryptów startowych, które są bardziej kompletne (start, stop, restart, czyste opcje ...)


1
upstart nie żyje. użyj systemd.
AmirHossein
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.