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

270
Vistas
¿Es posible apagar la máquina host ejecutando un comando en uno de sus contenedores docker?

Tengo una máquina host que tiene un contenedor docker. El contenedor está activo y ejecuta un servicio en particular. Al cumplir con una condición particular, quiero quitar el contenedor y apagar la máquina también. ¿Es posible hacerlo? ¿Estoy planeando modificar el código que ejecuta el servicio para manejar el apagado de la máquina? ¡Cualquier sugerencia es bienvenida!

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La ejecución de un apagado limpio dependerá del sistema de inicio del host.

Para evitar otorgarle al contenedor acceso --privileged y también para evitar instalar herramientas de inicio específicas del host en su contenedor, puede crear una interfaz para indicarle al host que se apague en lugar de intentar que el contenedor ejecute el apagado.

Una interfaz

Hay muchas maneras de hacer esto. Un punto de partida simple podría ser un volumen montado para compartir datos entre el contenedor y el host. Un archivo servirá por ahora, pero puede usar un socket, fifo, TCP o cualquier otro método IPC que desee.

Cree un archivo en el host, diga /var/run/shutdown_signal y monte el archivo en su contenedor

 docker run -d -v /var/run/shutdown_signal:/shutdown_signal whatever

Escriba una cadena en el archivo cuando desee que el host se apague

 docker exec $cid sh -c 'echo true > /shutdown_signal'

Entonces necesita algo ejecutándose en el host para monitorear el archivo.

Un script simple que espera cambios en el archivo con inotifywait .

 echo "waiting" > /var/run/shutdown_signal while inotifywait -e close_write /var/run/shutdown_signal; do signal=$(cat /var/run/shutdown_signal) if [ "$signal" == "true" ]; then echo "done" > /var/run/shutdown_signal shutdown -h now fi done

Puede sondear el archivo si inotifywait no está disponible.

 while sleep 30; do signal=$(cat /var/run/shutdown_signal) ...

La horrible alternativa

También hay una forma de kernel más universal para activar un apagado inmediato y sucio en Linux.

 docker run --privileged busybox \ sh -c 'echo 1 > /proc/sys/kernel/sysrq; echo o > /proc/sysrq-trigger'

Pero esto probablemente le causará más problemas de los que vale la pena.

about 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