ver terminar saber procesos proceso los eliminar detener como comando unix command-line process docker kill

unix - terminar - ¿Cómo matar el proceso dentro del contenedor? Comando superior Docker



kill linux (4)

Tengo un ejemplo simple de la guía oficial en el sitio web de Docker.

Ejecuto lo siguiente:

sudo docker run -d ubuntu:latest /bin/sh -c "while true; do echo hello world; sleep 1; done" a66asdasdhqie123...

Luego tome alguna salida del contenedor creado:

sudo docker logs a66 hello hello hello ...

Luego busco los procesos en ejecución de un contenedor:

sudo docker top a66 UID PID PPID C STIME TTY TIME CMD root 25055 15152 0 20:07 ? 00:00:00 /bin/sh -c while true; do echo hello world; sleep 1; done root 25295 25055 0 20:10 ? 00:00:00 sleep 1

A continuación, intento matar el primer proceso de contenedor:

sudo docker exec a66 kill -9 25055

Sin embargo, después de hacerlo, nada cambia. El proceso todavía funciona y muestra "hola" por segundo. ¿Qué hago mal?


Cuando reproduzco su situación, veo diferentes PID entre docker top <container> y docker exec -it <container> ps -aux . Cuando haces docker exec el comando se ejecuta dentro del contenedor => debe usar el pid del contenedor. De lo contrario, podrías matar sin el acoplador directamente desde el host, en tu caso: sudo kill -9 25055 .


Mira esto:

ps | grep -i a66 | tr -s '' ''|cut -f2 -d'' ''| { while read line; do kill -9 $line; done }

para entender este comienzo desde la ejecución de comandos desde la izquierda hasta el final de cada tubería (|)

Opción más simple:

kill $(pidof a66)


Me tomó un tiempo encontrar la respuesta correcta, pero tendrá que administrar este proceso desde el contenedor. Cuando ejecuta docker top a66 desde el host, los PID provienen de su host, aunque ese no es el caso si usa Cygwin. De todos modos, tendrá que bash o lo que tenga que volver a su contenedor y usar comandos como ps aux y kill mientras está en el contenedor para buscar y administrar los diferentes PID para los mismos procesos allí.


Estaba buscando algo como esto, pero no pude encontrar y luego hice esto:

[root @ notebook ~] # docker exec -it tadeu_debian ps aux | grep ping | awk ''{print $ 2}'' | xargs -I {} docker exec -i tadeu_debian kill -9

Fueron dos "ejecutivos" de Docker e one xargs.

Bueno, espero que esto ayude a alguien!