tag run name library imagenes hub example dockers container change docker

run - Docker: agregue una política de reinicio a un contenedor que ya se creó



dockers container download (3)

Veo que Docker ha agregado algo llamado políticas de reinicio para manejar el reinicio de los contenedores en caso de, por ejemplo, reiniciar.

Si bien esto es muy útil, veo que el comando de política de reinicio solo funciona con docker run y no docker start . Entonces mi pregunta es:

¿Hay alguna forma de agregar políticas de reinicio a un contenedor que ya se creó en el pasado?


El uso de la política --restart=always manejará el reinicio de los contenedores existentes en caso de reinicio.

El problema es que si hay varios contenedores con --restart=always cuando ejecuta la imagen de una versión más nueva como se describe en la ventana acoplable, ¿cómo deshabilita el reinicio automático en un contenedor? .

Intentar eliminar automáticamente el contenedor cuando exista mediante la opción de venta docker run --rm también generará problemas con la política --restart=always 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 la docker run --rm pero como se explica en la documentación de docker run --rm :

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.

Por lo tanto, cuando use esta --restart unless-stopped , para asegurarse de que el reinicio funcione en caso de que se detenga por accidente cuando cierre el terminal, haga una vez en otro terminal de la siguiente manera:

$ 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.


En versiones recientes de docker (a partir de 1.11) tiene un comando de update :

docker update --restart=always <container>


Hay dos enfoques para modificar RestartPolicy:

  • Encuentre la ID del contenedor, detenga todo el servicio acoplable, modifique /var/lib/docker/containers/CONTAINER_ID/hostconfig.json, establezca RestartPolicy -> Name en "siempre" e inicie el servicio acoplable.
  • docker commit su contenedor como una nueva imagen, detiene y rm el contenedor actual e inicia un nuevo contenedor con la imagen.