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.


welche ubuntu version benutzt du
Maythux

mit Ubuntu-Server 14.04
Nayan Tiwari


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.


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


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 :)


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 ...).


1
Emporkömmling ist tot. benutze systemd.
AmirHossein
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.