El uso de la --restart=alwayspolítica manejará el reinicio de los contenedores existentes en caso de reinicio.
El problema es que si hay varios contenedores con --restart=alwaysal ejecutar la imagen de una versión más reciente como se discutió en ventana acoplable - ¿Cómo desactivar el rearranque automático en un contenedor? .
Intentar eliminar automáticamente el contenedor cuando exista mediante la opción de venta docker run --rmtambién generará problemas con la --restart=always
política, ya que están en conflicto entre sí .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Entonces, en este caso, es mejor elegir otra opción: - reiniciar la política a menos que se detenga .
$ docker run --rm --restart unless-stopped <image>
Esta política no entrará en conflicto con el docker run --rmpero como se explica en la documentación de la ventana acoplable :
Es similar a --restart=always, excepto que cuando el contenedor se detiene (manualmente o de otro modo) , no se reinicia incluso después de reiniciar el demonio Docker.
Entonces, cuando use esta --restart unless-stoppedpolítica, para asegurarse de que el reinicio esté funcionando en caso de que se detenga por accidente cuando cierre el terminal, haga una vez en otro terminal como se muestra a continuación:
$ docker ps
$ docker restart <container>
Espere hasta que el proceso de eliminación finalice en el shell anterior, luego ciérrelo y simplemente salga ( no salga ).
Y verifique nuevamente en el terminal restante si el contenedor aún se está ejecutando:
$ docker ps
Si aún se está ejecutando, puede reiniciar de manera segura y verificar nuevamente que la aplicación se esté reiniciando y ver que su docker esté limpio sin usar múltiples contenedores.