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.