Docker在容器内杀死进程

Mak*_*zik 2 bash kill docker

我执行到Docker容器中 docker exec -it container-name bash

在容器里面我运行命令 ps aux | grep processName

我收到一个PID,然后运行:

kill processId 但收到:

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

我错过了什么或?我知道Docker top在主机ps aux内部和容器内显示不同的进程ID (如何杀死容器内的进程?Docker top命令),但是我是从容器内运行的?

Osc*_*vis 5

这种反应是因为您要杀死的进程在杀死它时不存在.例如,如果你启动ps aux你可以在容器内得到这样的输出(当然它取决于容器):

oot@69fbbc0ff80d:/# 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
Run Code Online (Sandbox Code Playgroud)

然后,如果您尝试使用PID 15终止进程,您将收到错误,因为PID 15在尝试杀死它时完成.ps命令在显示进程信息后终止.所以:

root@69fbbc0ff80d:/# kill 15
bash: kill: (15) - No such process
Run Code Online (Sandbox Code Playgroud)

在docker容器中,除了根进程(id 1)之外,你可以像正常一样杀死进程.你无法杀死它:

root@69fbbc0ff80d:/# 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
root@69fbbc0ff80d:/# kill 1
root@69fbbc0ff80d:/# 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
Run Code Online (Sandbox Code Playgroud)

如你所见,你无法杀死它.无论如何,如果你想证明你可以杀死进程你可以做:

root@69fbbc0ff80d:/# 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
root@69fbbc0ff80d:/# sleep 1000 &
[1] 19
root@69fbbc0ff80d:/# 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
root@69fbbc0ff80d:/# kill 19
root@69fbbc0ff80d:/# 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
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.