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

Why can't I see the mongo PID in process state list on mac

我正在使用 docker。所以 docker 是一个进程,而不是虚拟机。检查这个。所以我尝试 运行 'docker run --name mongo -d mongo',效果很好。然后我使用 'docker top mongo' 检查了 'PID' 它 return 'PID' 的详细信息。然后我尝试 'ps aux' 查看所有进程状态。但我在列表中看不到 mongo 'PID'。这是为什么。我正在使用 mac 和最新的 mac os.

您需要 docker 执行您的 mongodb 容器,运行 在您的 XHyve/HyperKit 虚拟机中。

 docker exec -it <containerID> bash 

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

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

作为Matt adds :

You can also connect to the vm to see the real pid with

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

(如“”中所述)

正如其他人提到的,当 运行ning 在 MAC 上时,Docker 实际上是 运行ning 在虚拟机的后台,因此您将无法直接查看容器进程。

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

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