docker:`top`和`ps`的不同PID

时间:2015-11-20 20:04:22

标签: linux docker

我不明白

的区别
$> 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显示的是什么!

2 个答案:

答案 0 :(得分:4)

docker exec lamp-test ps在泊坞广告容器中显示pids

docker top lamp-test显示主机系统pids

您可以看到容器进程,但不能杀死它们。这"有缺陷"隔离实际上有一些很大的好处,比如能够从主机上运行的单个monitor进程监视所有容器内运行的进程。

答案 1 :(得分:0)

我不认为您应该为此担心。您不能在主机环境中杀死PID,但可以在容器中杀死它。

  1. docker exec <CONTAINER NAME> ps记住PID

  2. docker exec <CONTAINER NAME> kill <PID>