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

我正在使用docker。 所以docker是一个过程,而不是一个虚拟机。 检查这一点。 所以我试图运行“docker run –name mongo -d mongo”,它工作正常。 然后我使用“docker top mongo”检查了'PID',它返回'PID'的细节。 然后我试着'ps辅助'来查看所有进程状态。 但我不能在列表中看到mongo“PID”。 这是为什么。 我用最新的mac os使用mac。

你需要docker exec到你的mongodb容器,运行在你的XHyve / HyperKit虚拟机中。

  docker exec -it <containerID> bash 

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

请参阅本文中的示例(在Mac上)“ 如何使用Docker使用MongoDB和NodeJS ”。

正如马特 在评论中所说 :

你也可以连接到VM来看到真正的PID

 screen ~/Library/Containers/com.docker.docker/Data/com.docker.drive‌r.amd64-linux/tty 

(如“ Mac / OS X上的/ var / lib / docker在哪里 ”中所述)

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

而且,即使连接到实际的虚拟机并检查了mongo容器的PID,它也会与运行docker top mongo时报告的PID不同。

这是由于docker用来隔离Docker容器内运行的进程的PID名称空间 。 所以不要依靠PID来检测过程。