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? .
Essayer de supprimer automatiquement le conteneur lorsqu'il existe par l'option put docker run --rm
posera également un problème avec la --restart=always
stratégie car ils sont en conflit les uns avec les autres .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Dans ce cas, il est préférable de choisir une autre option: - redémarrer la stratégie sauf arrêt .
$ docker run --rm --restart unless-stopped <image>
Cette politique ne sera pas en conflit l' docker run --rm
mais comme expliqué dans la documentation docker :
Il est similaire à --restart=always
, sauf que lorsque le conteneur est arrêté (manuellement ou autrement) , il n'est pas redémarré même après le redémarrage du démon 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:
$ docker ps
$ docker restart <container>
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:
$ docker ps
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.