繁体   English   中英

为什么在docker容器内运行top只显示容器内的进程?

[英]Why does running top inside docker container only show processes inside the container?

我在Docker容器中运行顶部,我发现显示的唯一进程是用于运行容器和顶部的初始进程。 为什么它显示这个而不是在docker主机上显示其他进程?

为了理解为什么会发生这种情况,您需要了解Docker正在利用的Linux的基本概念。

Linux内核中有一个名为namespaces功能,它以一组进程看到一组资源的方式分区/隔离主机资源,而另一组进程看到另一组资源。

Linux有7种类型的命名空间:

  • 安装 - 隔离安装点
  • UTS - 隔离主机名
  • IPC - 隔离进程间通信资源
  • PID - 隔离PID编号空间
  • 网络 - 隔离网络接口
  • 用户 - 隔离UID / GID号码空格
  • Cgroup - 隔离cgroup根目录

当您在Linux机器上工作时,您所做的一切都在同一名称空间中,但是当您通过默认情况下docker run创建容器时,它将创建一个新的单独名称空间以将容器与主机隔离。

在您的问题的特定情况下,您只看到一个进程正在运行,因为容器与主机位于不同的PID命名空间中。

在创建容器时,可以通过使用--pid="host"告诉Docker共享相同的PID命名空间,在某些情况下这样做很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM