如何在 Mac Os 上显示 docker 容器进程

如何在 Mac Os 上显示 docker 容器进程

在容器中运行的 Docker 进程也应该在主机上可见。

当我docker top在其中一个容器上运行时,我可以看到应该在主机上运行的进程的 pid,但我找不到它正在运行的ps -ef命令。它被隐藏了吗?我如何才能看到它列出的进程?

在 RHEL 系统上,我可以立即看到

我正在使用 Catalina 10.15.3

答案1

我完全是 Docker 新手,但 Bret Fisher 在 Udemy 上的 Docker 课程提到了 macOS 上的这个问题,并指出了解决方案贾斯汀·科马克。我其实不太了解 Justin 的解决方案的细节,但我设法实现了 OP 的要求:查看在主机上运行的 docker 容器内运行的进程,主机是 Docker 在 macOS 上使用的虚拟机。操作方法如下:

步骤 1)显示在特定容器中运行的进程,例如名为“数据库”的进程:

docker container top database

结果: 在此处输入图片描述

步骤 2)使用与 Justin Cormack 的 repo 相关的命令,在 Mac 上进入所有 Docker 容器正在运行的“虚拟机”:

docker run -it --rm --privileged --pid=host justincormack/nsenter1 

结果:

在此处输入图片描述

注意更改后的提示。现在您已进入虚拟机。您可以进一步调查虚拟机,例如使用ls -la

步骤 3)使用普通top命令(例如,虚拟机上docker container top没有可用的命令)docker

结果:

在此处输入图片描述

请注意,除了 VM 上的其他进程之外,列表还显示 PID 为 3532 的进程,这是来自容器的 mysql 进程(参见步骤 1)。

4)退出进程类型ctrl+C,退出虚拟机类型exit

现在您已回到真正的 macOS 上了。

希望这对其他像我一样的新手有帮助。:)

相关内容