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

427
Views
¿Cómo puedo forzar la eliminación de un contenedor docker usando el módulo 'docker_container' de Ansible?

Tengo problemas para eliminar contenedores de mi docker host después de instalar cadvisor: https://github.com/google/cadvisor/issues/771

Tengo una gran cantidad de secuencias de comandos de Ansible (2.2.1.0) que utilizo para instalar mis contenedores de servicios en estos hosts docker e internamente usan el módulo docker_container. Muchas veces, estos scripts querrían eliminar un contenedor, pero debido al problema mencionado anteriormente, fallan.

Puedo forzar la eliminación del contenedor docker en estos hosts docker fácilmente:

 docker rm container_name -fv

Entonces, esperaría que la opción force_kill provista en el módulo docker_container (docs del módulo docker_container ) debería poder hacer lo mismo:

 - name: Delete docker containers docker_container: name: "container_name" force_kill: true keep_volumes: false state: absent

Pero el guión falla siempre. No sé cuál es el propósito de esta opción si no es capaz de forzarlo a matarlo. Todos mis scripts están fallando incluso después de habilitar force_kill y necesito saber cómo asegurarme de que esta opción funcione según lo previsto.

Actualización: ahora entiendo que la opción force_kill está enviando la señal de eliminación de la ventana acoplable. He actualizado la pregunta para reflejar mejor lo que realmente quiero lograr.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Creo que force_kill envía una señal de muerte como docker kill , así que

El proceso principal dentro del contenedor se enviará SIGKILL, o cualquier señal especificada con la opción --signal.

Verificaría CMD y/o ENTRYPOINT en el Dockerfile de la imagen (si lo usó) porque

ENTRYPOINT y CMD en el formulario de shell se ejecutan como un subcomando de /bin/sh -c, que no pasa señales. Esto significa que el ejecutable no es el PID 1 del contenedor y no recibe señales de Unix.

 CMD ["/init.sh"] # exec form CMD /init.sh # shell form

No estoy seguro de que esta sea la razón de su problema, pero puede ser que un CMD en forma de shell no reenvíe la señal a su comando.

En cuanto al blog de Dominique Burton

Utilice siempre el formulario exec si desea que Docker envíe señales a su (sub)proceso. Esto no solo es importante para enviar señales personalizadas a un contenedor Docker, sino que también es importante para detener correctamente (es decir, detener Docker) un contenedor.

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!