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

433
Vistas
¿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 Respuestas
Responde la pregunta

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 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