Puedo habilitar el reinicio automático con --restart=always
, pero después de detener el contenedor, ¿cómo apago ese atributo?
Normalmente ejecuto un servidor web y normalmente mapeo el puerto 80:
docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash
Pero hay momentos en que quiero ejecutar una versión más nueva de mi imagen, pero quiero mantener el viejo contenedor. El problema es que si hay varios contenedores con --restart=always
, solo se inicia uno de ellos (¿aleatorio?) Porque todos compiten por el puerto 80 en el host.
docker update --restart=no $(docker ps -a -q)
para actualizar todos sus contenedores :-)Puede comenzar su contenedor con
--restart=unless-stopped
.fuente
Use lo siguiente para deshabilitar TODOS los contenedores de reinicio automático (daemon).
Use lo siguiente para deshabilitar reiniciar un solo contenedor.
Racional :
Docker proporciona políticas de reinicio para controlar si sus contenedores se inician automáticamente cuando salen o cuando Docker se reinicia. Esto suele ser muy útil cuando Docker ejecuta un servicio clave.
Notas
Si está utilizando docker-compose, puede ser útil saberlo.
fuente
Si tiene un enjambre reiniciando los contenedores, el enjambre reiniciará cualquier contenedor que detenga o rm, independientemente de la opción de reinicio. Esa es una característica, no un error.
Asegúrese de no ejecutar un servicio que olvidó:
Entonces, puedes detener el servicio
fuente
ls
da como resultado un errorError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.