为什么我不能在mac上的进程状态列表中看到mongo PID

时间:2017-11-15 05:06:59

标签: docker process pid

我正在使用码头工具。所以docker是一个进程,而不是VM。检查这个。所以我试着运行'docker run --name mongo -d mongo',它运行正常。然后我使用'docker top mongo'检查'PID'它返回'PID'细节。然后我尝试'ps aux'来查看所有过程状态。但我不能在列表中看到mongo'PID'。这是为什么。我正在使用mac和最新的mac os。

2 个答案:

答案 0 :(得分:4)

你需要将你的mongodb容器停靠在你的XHyve/HyperKit虚拟机中。

 docker exec -it <containerID> bash 

然后你可以执行ps,并在那里看到mongodb pid。

请参阅本文“How to use MongoDB & NodeJS with Docker”作为示例(在Mac上)。

由于Matt添加in the comments

  

您还可以使用

连接到vm以查看真实的pid
screen ~/Library/Containers/com.docker.docker/Data/com.docker.drive‌r.amd64-linux/tty

(如“Where is /var/lib/docker on Mac/OS X”中所述)

答案 1 :(得分:3)

正如其他人所提到的,当在MAC上运行时,Docker实际上是在VM内部的背景中运行,因此您将无法直接看到容器进程。

此外,即使您连接到实际的VM并检查mongo容器的PID,它也会与运行docker top mongo时报告的PID不同。

这是由于PID namespaces码头工具用于隔离在docker容器内运行的进程。所以不要依赖PID来检测过程。