Comment redémarrer automatiquement un conteneur Docker après un redémarrage dans CoreOS?
en supposant que le démon Docker est redémarré automatiquement par n'importe quel init.d ou processus de type systemd lorsque le système D'exploitation est redémarré, Quelle est la meilleure façon de redémarrer un ou plusieurs conteneurs Docker? Par exemple, je pourrais avoir un certain nombre de serveurs web derrière un mandataire inverse ou un serveur de base de données.
6 réponses
CoreOS utilise systemd pour gérer les services de longue durée:
si vous démarrez le démon docker -d -r
, il va redémarrer tous les conteneurs qui étaient en cours d'exécution avant l'arrêt du démon.
C'est le comportement par défaut dans la prochaine version.
Ce qui a fonctionné pour moi est d'ajouter --restart='always'
au conteneur {run-D...} la commande
La seule documentation que j'ai vu est Panneau de Host Integration docs qui sont un peu légers sur les détails, etc.
Fondamentalement, il suggère de démarrer le démon -r=false
et en utilisant systemd (ou upstart si vous utilisez autre chose que CoreOS).
pour les gens veulent redémarrer automatiquement un conteneur docker, mais n'a pas précisé --restart
drapeau (la valeur par défaut de "non") lors de l'exécution, vous pouvez utiliser le panneau mise à jour commande ajouter l'un des trois autres options:
- en cas d'échec
- sauf-arrêté
- toujours
Voir ce post pour les détails. Les gens ont des problème avec always
redémarrer flag on, peut envisager d'utiliser l'un ou l'autre on-failure
ou unless-stopped
option.
Utilisé Restart
et RestartSec
pour le faire fonctionner:
# Restart after crash
Restart=on-failure
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s
View la documentation.