我正在docker容器中运行top,并且看到显示的唯一进程是用于运行容器和top的初始进程。为什么它显示此内容而不是在Docker主机上也显示其他进程?
答案 0 :(得分:3)
为了了解为什么会这样,您需要了解Docker利用的Linux基本概念。
Linux内核中有一个称为namespaces
的功能,该功能可以通过一组进程看到一组资源的方式来分区/隔离主机资源,而另一组进程看到另一组资源的方式。
Linux有7种类型的名称空间:
在Linux机器上工作时,所做的所有操作都在同一命名空间上,但是默认情况下,通过执行docker run
创建容器时,它将创建一个新的单独的命名空间以将容器与您的容器隔离主机。
在您的问题的特定情况下,您看到的只是一个进程正在运行,因为该容器与主机位于不同的PID名称空间中。
创建容器时,您可以使用--pid="host"
告诉Docker共享相同的PID名称空间,在某些情况下这样做很有用。