Comment lancer automatiquement le conteneur de docker au redémarrage du système?


47

Comme j'ai hébergé un site WordPress dans des conteneurs Docker et que je veux que ces conteneurs soient toujours démarrés au démarrage, vous devez le faire manuellement.


quelle version d'ubuntu utilisez-vous?
Maythux

en utilisant le serveur Ubuntu 14.04
nayan tiwari

Cela a été demandé sur ServerFault .
Dan Dascalescu

Crossposted. S'il vous plaît choisir un site, pas beaucoup, pour poster des choses sur.
Thomas Ward

Réponses:


35

Jusqu'à présent, je ne pense pas qu'il y ait un moyen de le faire normalement. Une solution délicate consiste à utiliser la politique de redémarrage

sudo docker run --restart=always -d your_image

Cela signifie que chaque fois que vous arrêtez cette opération, vous quittez votre conteneur. Ainsi, lorsque vous démarrez votre hôte, cela entraîne le redémarrage du menu fixe.


il y a des outils d'automatisation comme le chef mais je ne sais pas comment les utiliser
nayan tiwari

Il encore au stade expérimental pour Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux

2
Pourquoi ne pas utiliser les possibilités du système pour cela? upstart et systemd peuvent y faire face à la perfection
Reishin

29

Il est très courant d'ajouter la stratégie de redémarrage sur un conteneur existant.

Cela pourrait être fait avec la commande suivante: docker update --restart {no,on-failure,unless-stopped,always} container_name

Plus de détails: Docker - Démarrer les conteneurs automatiquement


2
Cela a parfaitement résolu mon problème! J'avais un conteneur avec ma base de données et je voulais le démarrer au démarrage de mon Mac. En spécifiant que son image était toujours redémarrée (à moins d'être arrêtée), cela a fonctionné!
Colin

21

Comme ubuntu 15 prend maintenant en charge systemd, exemple pour ce gestionnaire:

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

Plus disponible sur le site de docker

Ps config assez mignon :)


4

Ce que j'ai fait est d'utiliser les fichiers Upstart.

Vous trouverez des exemples et d’autres solutions sur le site Web de Docker .

Créez un fichier comme celui-ci dans / 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

Notez que depuis Docker 1.2, il existe des stratégies de redémarrage qui peuvent également aider à redémarrer automatiquement les conteneurs lorsque le service Docker est exécuté (après le démarrage, par exemple).

Personnellement, j'utilise puppet pour approvisionner mon poste de travail et ce module Docker pour créer automatiquement les scripts de démarrage les plus complets (démarrage, arrêt, redémarrage, options de nettoyage, etc.).


1
upstart est mort. utilisez systemd.
AmirHossein
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.