4
我不明白,在泊坞窗:不同的PID为`top`和`ps`
$> docker top lamp-test
PID USER COMMAND
31263 root {supervisord} /usr/bin/python /usr/bin/supervisord -n
31696 root {mysqld_safe} /bin/sh /usr/bin/mysqld_safe
31697 root apache2 -D FOREGROUND
...
和
$> docker exec lamp-test ps
PID TTY TIME CMD
1 ? 00:00:00 supervisord
433 ? 00:00:00 mysqld_safe
434 ? 00:00:00 apache2
831 ? 00:00:00 ps
那么的不同,问题是,为什么是PID不同?我会说ps
的输出是命名空间,但如果这是真的,top
显示的是什么!
那么这意味着容器内的进程在主机上也有一个PID,为什么?我认为这些过程运行在某种虚拟环境中,不能从外部看到。现在我可以从外面杀掉这些进程了吗? –
Docker不是虚拟机。这是一种'chroot'(LXC)。主机可以看到容器进程,但容器进程看不到主机进程。基本隔离。 –
当我试图杀死这样的进程'kill 31696'时,我得到了'kill:31696:没有这样的进程'那么为什么我必须做'docker exec lamp-test kill 433'? –