
Una vez que reinicié el servicio Docker en Ubuntu Box, service docker restart
inicié algunos de los contenedores, no esperaba que se iniciara.
¿Porqué es eso? ¿Qué archivo de configuración/almacenamiento/lo que sea que contenga información sobre qué imágenes deben iniciarse?
Tengo muchas imágenes (~50) cuando las enumero con docker images
. Pero sólo 8 de ellos comienzan cuando inicio el archivo dockerd
. ¿Por qué? ¿Cómo cambio esto?
Gracias.
Respuesta1
Para contenedores individuales, existe una política de reinicio que puede aplicar. Eso se establece docker run --restart=...
al iniciar el contenedor, o una restart: ...
línea en el archivo yml de redacción. Puede cambiar la política de reinicio en un contenedor existente con:
$ docker update --restart=... ${container_name_or_id}
Para enumerar todos los contenedores y sus políticas de reinicio, puede ejecutar esto desde bash:
$ docker container ls -q | \
xargs docker container inspect --format \
'{{ .Name }}: {{.HostConfig.RestartPolicy.Name}}'
Elreiniciar políticaspuedes usar son:
No No reinicie automáticamente el contenedor cuando salga. Este es el valor predeterminado.
en caso de error[:max-reintentos] Reinicie solo si el contenedor sale con un estado de salida distinto de cero. Opcionalmente, limite el número de reintentos de reinicio que intenta el demonio Docker.
siempre Reinicie siempre el contenedor independientemente del estado de salida. Cuando especifica siempre, el demonio Docker intentará reiniciar el contenedor indefinidamente. El contenedor también se iniciará siempre al iniciar el demonio, independientemente del estado actual del contenedor.
a menos que se detenga Reinicie siempre el contenedor independientemente del estado de salida, pero no lo inicie al iniciar el demonio si el contenedor se ha detenido anteriormente.
Una política de reinicio always
daría como resultado un reinicio inesperado del contenedor después de que el demonio acoplable se reinicie como lo está viendo, incluso si hubiera detenido el contenedor intencionalmente. Por este motivo, normalmente creo contenedores independientes con una unless-stopped
política de reinicio.
Si está utilizando el modo Docker Swarm, los servicios iniciarán automáticamente un nuevo contenedor cada vez que el estado de destino no coincida con el estado actual. Para un clúster de enjambre de un solo nodo que se ve a menudo en las computadoras portátiles, esto significa que el contenedor se reiniciará cuando reinicie la ventana acoplable, pero también si simplemente detiene o elimina el contenedor en ejecución.
Detener y eliminar permanentemente un servicio:
$ docker service ls # to show the running services
$ docker service rm ${service_id_or_name}
Si un servicio está configurado con modo replicado y simplemente desea detenerlo temporalmente sin eliminar el servicio, puede actualizar las réplicas de destino a 0:
$ docker service update --replicas=0 ${service_id_or_name}
Y los servicios pueden implementarse como parte de una pila. Para eliminar toda la pila:
$ docker stack ls # to show the defined stacks
$ docker stack rm ${stack_id_or_name}
Respuesta2
Significa que algunos de sus contenedores tienen RestartPolicy configurado en siempre. Esto significa que el contenedor tiene que estar siempre arriba. Inspeccione estos contenedores en cuestión, verificando específicamente el valor de RestartPolicy.
$ docker inspect container-name
Esto suele suceder cuando se creó un contenedor con una bandera --restart
siempre
Para desactivar el inicio automático del contenedor, use el comando:
$ docker update --restart=no container-name
Otra forma de solucionar esto es establecer RestartPolicy en menos que se detenga al iniciar el contenedor. Puedes leer la documentación completa deactualización de la ventana acoplable
Respuesta3
Busque la política de reinicio de Docker, como --restart always
. Supongo que algunos de sus contenedores lo están usando. Verifique el script de inicio de su servicio para Docker. Puedes utilizar docker ps -a --no-trunc
para ver la lista completa.
Respuesta4
Las imágenes no se inician automáticamente, los contenedores sí.
En service docker restart
contenedores que dondeinterrumpidoocomenzócon --restart always
bandera se iniciará de nuevo automáticamente al reiniciar. Compruébalos a través de docker ps -a
.
Si no desea que se inicie un contenedor (incluso uno con --restart always
bandera), simplemente debe eliminarlo docker rm container
o docker-compose down
.