2017-10-24 2 views
1

I in Docker Container exec mit docker exec -it container-name bashDocker Kill Prozess innerhalb des Behälters

Innenbehälter I run Befehl ps aux | grep processName

Ich erhalte eine PID und danach habe ich ausgeführt:

kill processId aber erhalten:

-bash: kill: (21456) - No such process

Fehle ich etwas oder? Ich weiß, dass Docker zeigt verschiedene Prozess-IDs von top Befehl innerhalb des Hosts und ps aux innerhalb des Containers (How to kill process inside container? Docker top command), aber ich führe dies aus dem Inneren Container?

Antwort

2

Diese Antwort ist, weil der Prozess, den Sie versuchen zu töten, nicht im Moment des Tötens existiert. wenn Sie ps aux Zum Beispiel starten können Sie eine Ausgabe wie diese in einem Container bekommen (es hängt von dem Behälter natürlich):

[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  15 0.0 0.0 36840 2904 pts/0 R+ 13:57 0:00 ps aux 

Dann, wenn Sie versuchen, den Prozess zu beenden und mit 15 PID Sie den Fehler erhalten werden weil PID 15 in dem Moment fertig ist, in dem versucht wird, es zu töten. Der Befehl ps wird beendet, nachdem Sie die Prozessinformationen angezeigt haben. Also:

[email protected]:/# kill 15 
bash: kill: (15) - No such process 

In einem Docker Container können Sie Prozess in der gleichen Art und Weise wie normal mit Ausnahme des Wurzelprozesses (id 1) töten. Sie können es nicht töten:

[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  16 0.0 0.0 36840 2952 pts/0 R+ 13:59 0:00 ps aux 
[email protected]:/# kill 1 
[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  17 0.0 0.0 36840 2916 pts/0 R+ 13:59 0:00 ps aux 

Wie Sie sehen können Sie es nicht töten können. Wie auch immer, wenn Sie zu überzeugen versuchen, dass Sie Prozesse töten können Sie tun können:

[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  18 0.0 0.0 36840 3064 pts/0 R+ 14:01 0:00 ps aux 
[email protected]:/# sleep 1000 & 
[1] 19 
[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  19 0.0 0.0 4372 724 pts/0 S 14:01 0:00 sleep 1000 
root  20 0.0 0.0 36840 3016 pts/0 R+ 14:01 0:00 ps aux 
[email protected]:/# kill 19 
[email protected]:/# ps aux 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.0 0.0 18400 3424 pts/0 Ss 13:55 0:00 bash 
root  21 0.0 0.0 36840 2824 pts/0 R+ 14:01 0:00 ps aux 
[1]+ Terminated    sleep 1000 

Hoffe, es hilft.

+0

Dank Oscar. Es scheint, dass die PID, auf die ich Bezug nahm, falsch war. Es ist seltsam, so kleine PIDs im Docker-Container zu sehen, wie sie normalerweise im Host viel höher sind. –

Verwandte Themen