Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda