Je vois que Docker a ajouté quelque chose appelé politiques de redémarrage pour gérer le redémarrage des conteneurs en cas de redémarrage, par exemple.
Bien que cela soit très utile, je constate que la commande de stratégie de redémarrage fonctionne avec docker run
et non docker start
. Ma question est donc:
Existe-t-il un moyen d'ajouter des stratégies de redémarrage à un conteneur déjà créé par le passé?
Réponses:
Dans les versions récentes de docker (à partir de 1.11), vous avez une
update
commande:la source
docker update --restart always <container>
docs.docker.com/engine/admin/start-containers-automaticallydocker update
accepte plusieurs ID de conteneur, donc pas besoin duxargs
tout, faites-ledocker update --restart=always $(docker ps -q)
.Il existe deux approches pour modifier RestartPolicy:
docker commit
votre conteneur en tant que nouvelle image, arrêtez & rm le conteneur actuel et démarrez un nouveau conteneur avec l'image.la source
docker update
Permet malheureusement de modifier la politique de redémarrage uniquement sur 1.11+L'utilisation de la
--restart=always
stratégie gérera le redémarrage des conteneurs existants en cas de redémarrage.Le problème est que s'il existe plusieurs conteneurs avec
--restart=always
lorsque vous exécutez l'image d'une version plus récente, comme indiqué dans Docker - comment désactiver le redémarrage automatique sur un conteneur? .Dans ce cas, il est préférable de choisir une autre option: - redémarrer la stratégie sauf arrêt .
Cette politique ne sera pas en conflit l'
docker run --rm
mais comme expliqué dans la documentation docker :Donc, lorsque vous utilisez cette
--restart unless-stopped
stratégie, pour vous assurer que le redémarrage fonctionne au cas où il s'arrêterait par accident lorsque vous fermez le terminal, effectuez une fois dans un autre terminal comme ci-dessous:Attendez la fin du processus de mise à mort dans le shell précédent, puis fermez-le et partez ( ne quittez pas ).
Et vérifiez à nouveau dans le terminal restant si le conteneur est toujours en cours d'exécution:
S'il est toujours en cours d'exécution, vous pouvez redémarrer en toute sécurité et vérifier à nouveau que l'application redémarre et voir que votre docker est propre sans utiliser plusieurs conteneurs.
la source