Wie starte ich den Docker-Container beim Neustart des Systems automatisch?

46

Da ich eine WordPress-Site in Docker-Containern gehostet habe und diese Container immer beim Booten gestartet werden sollen, muss dies manuell erfolgen.

Nayan Tiwari
quelle
welche ubuntu version benutzt du
Maythux
mit Ubuntu-Server 14.04
Nayan Tiwari
Dies wurde bei ServerFault abgefragt .
Dan Dascalescu
Crossposted. Bitte wählen Sie eine Website aus, nicht viele, auf der Sie Beiträge veröffentlichen möchten.
Thomas Ward

Antworten:

34

Bis jetzt glaube ich nicht, dass es einen Weg gibt, das normal zu machen. Eine schwierige Lösung ist die Verwendung einer Neustartrichtlinie

sudo docker run --restart=always -d your_image

Dies bedeutet, dass beim Herunterfahren des Containers beim Starten des Hosts der Docker neu gestartet wird.

Maythux
quelle
während ich danach suche, gibt es einige automatisierungstools wie chef, aber ich weiß nicht, wie man sie benutzt
nayan tiwari
Es ist immer noch experimentell für Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux
2
Warum nicht die Systemmöglichkeiten dafür nutzen? Sowohl Emporkömmling als auch System können perfekt damit
umgehen
29

Es ist ein sehr häufiger Anwendungsfall, die Neustartrichtlinie einem vorhandenen Container hinzuzufügen.

Dies kann mit dem folgenden Befehl erfolgen: docker update --restart {no,on-failure,unless-stopped,always} container_name

Weitere Details: Docker - Container automatisch starten

SlimIT
quelle
2
Das hat mein Problem perfekt gelöst! Ich hatte einen Container mit meiner Datenbank und wollte, dass er beim Start meines Mac gestartet wird. Mit der Angabe, dass das Image immer neu gestartet wurde (sofern es nicht gestoppt wurde), gelang dies!
Colin
21

Da Ubuntu 15 nun systemd unterstützt, Beispiel für diesen Manager:

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

Weitere Informationen finden Sie auf der Docker-Website

PS Ziemlich niedlich config :)

Reishin
quelle
4

Ich habe Upstart-Dateien verwendet.

Beispiele und andere Lösungen finden Sie auf der Docker-Website .

Erstellen Sie eine solche Datei in / 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

Beachten Sie, dass es ab Docker 1.2 Neustartrichtlinien gibt, die auch dazu beitragen können, Container automatisch neu zu starten, wenn der Docker-Dienst ausgeführt wird (z. B. nach dem Start).

Ich persönlich stelle meine Workstation mit Puppet bereit und erstelle mit diesem Docker-Modul automatisch die vollständigeren Startskripte (Start, Stopp, Neustart, Bereinigungsoptionen ...).

aklmie
quelle
1
Emporkömmling ist tot. benutze systemd.
AmirHossein