Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

639
Vistas
Docker: ¿qué hace realmente `docker run --restart always`?

Aunque parece que el indicador --restart es simple y directo, surgieron varias preguntas al experimentar con él:

  1. Con respecto a las definiciones de ENTRYPOINT , ¿cuáles son las semánticas definidas reales durante el reinicio?
  2. Si exec en el contenedor (estoy en un DDC) y mato -9 el proceso, se reinicia, pero si docker kill , no lo hace. ¿Por qué?
  3. ¿Cómo interactúa el reinicio con los contenedores de datos compartidos/volúmenes con nombre?
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Políticas de reinicio

Con el indicador --restart en la ejecución de Docker, puede especificar una política de reinicio sobre cómo se debe o no reiniciar un contenedor al salir.

Cuando una política de reinicio está activa en un contenedor, se mostrará como Activo o Reiniciando en docker ps. También puede ser útil usar eventos de la ventana acoplable para ver la política de reinicio en vigor.

 docker run --always

Siempre reinicie el contenedor independientemente del estado de salida. Cuando especifica siempre, el demonio de Docker intentará reiniciar el contenedor indefinidamente. El contenedor siempre se iniciará en el inicio del daemon, independientemente del estado actual del contenedor.

Te recomiendo esta documentación sobre políticas de reinicio.

Documentación - Políticas de reinicio

Actualizar Docker v19.03

Reiniciar políticas (--restart)

Use --restart de Docker para especificar la política de reinicio de un contenedor. Una política de reinicio > controla si el demonio Docker reinicia un contenedor después de salir. Docker admite las siguientes políticas de reinicio:

siempre Siempre reinicie el contenedor independientemente del estado de salida. Cuando especifica siempre, el demonio de Docker intentará reiniciar el contenedor indefinidamente. El contenedor siempre se iniciará en el inicio del daemon, independientemente del estado actual del contenedor.

 $ docker run --restart=always redis

Documentación - Políticas de reinicio

over 4 years ago · Santiago Trujillo Denunciar

0

Para configurar la política de reinicio para un contenedor, use el indicador --restart cuando use el comando docker run. El valor del indicador --restart puede ser cualquiera de los siguientes:

no No reinicie automáticamente el contenedor. (el valor por defecto)

on-failure Reinicie el contenedor si se cierra debido a un error, que se manifiesta como un código de salida distinto de cero.

always Siempre reinicie el contenedor si se detiene. Si se detiene manualmente, se reinicia solo cuando se reinicia el demonio Docker o el propio contenedor se reinicia manualmente.

unless-stopped Similar a always , excepto que cuando el contenedor se detiene (manualmente o de otra manera), no se reinicia incluso después de que se reinicia el demonio Docker.

El siguiente ejemplo inicia un contenedor de Redis y lo configura para que siempre se reinicie a menos que se detenga explícitamente o se reinicie Docker.

 $ docker run -d --restart unless-stopped redis

Este comando cambia la política de reinicio de un contenedor que ya se está ejecutando llamado redis.

 $ docker update --restart unless-stopped redis

Y este comando garantizará que todos los contenedores que se están ejecutando actualmente se reiniciarán a menos que se detengan.

 $ docker update --restart unless-stopped $(docker ps -q)

Detalles de la política de reinicio

Tenga en cuenta lo siguiente cuando utilice políticas de reinicio:

  • Una política de reinicio solo surte efecto después de que un contenedor se inicia correctamente. En este caso, iniciar correctamente significa que el contenedor está activo durante al menos 10 segundos y Docker ha comenzado a monitorearlo. Esto evita que un contenedor que no arranca entre en un bucle de reinicio.
  • Si detiene manualmente un contenedor, su política de reinicio se ignora hasta que el demonio Docker se reinicia o el contenedor se reinicia manualmente. Este es otro intento de evitar un bucle de reinicio.
  • Las políticas de reinicio solo se aplican a los contenedores. Las políticas de reinicio para los servicios de enjambre se configuran de manera diferente.

Documentación

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve algo de tiempo para depurar esto más hoy -> debido a que estaba usando una imagen acoplable 'oficial', tenía poca o ninguna visibilidad de lo que estaba ocurriendo. Para resolver esto, amplié la imagen oficial e invoqué mi propio punto de entrada. El Dockerfile:

 FROM officialImage:version ENV envOne=value1 \ envTwo=value2 COPY wrapper-entrypoint.sh / ENTRYPOINT ["/wrapper-entrypoint.sh"]

Luego hice un 'set -x' en el script wrapper-entrypoint.sh e invoqué el original:

 #!/bin/bash set -x echo "Be pedantic: all args passed: $@" bash -x ./original-entrypoint.sh "$@"

De esto encontré:

  • Restart llama al ENTRYPOINT original con los argumentos originales. La imagen oficial que utilicé detectó que ya se había inicializado y, por lo tanto, actuó de manera diferente. Es por eso que estaba confundido sobre la semántica. Usar -x me permitió ver lo que realmente estaba sucediendo.
  • Todavía no sé por qué docker kill detiene el reinicio, pero eso es lo que veo, al menos en Docker Data Center.
  • No creo que los volúmenes de datos compartidos afecten esto de ninguna manera, GUARDE para las acciones que un script de ENTRYPOINT dado podría tomar en función de su condición en el momento del reinicio.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda