Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!