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.

nayan tiwari
źródło
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.

Maythux
źródło
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

SlimIT
źródło
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 :)

Reishin
źródło
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 ...)

aklmie
źródło
1
upstart nie żyje. użyj systemd.
AmirHossein