创建非共享命名空间



当运行unshare命令(man 1 unshare)时,它允许在与shell不同的命名空间中执行命令,为什么我仍然看到来自主机的所有进程?PID 命名空间不是设计上取消共享的吗?

谢谢。

unshare仅取消共享通过选项设置的那些命名空间。请特别看看 --mount-proc 选项(引用自 unshare(1)):

在运行程序之前,在挂载点挂载 proc 文件系统(默认值为/proc)。 这在以下情况下很有用 创建新的 PID 命名空间。 这也意味着创建一个新的挂载命名空间,因为/proc 挂载会弄乱现有的 系统上的程序。 新的 proc 文件系统被显式挂载为私有(使用 MS_PRIVATE|MS_REC)。

这很重要ps因为命令从 /proc fs 读取 pid(参见 ps(1)):

此 ps 通过读取/proc 中的虚拟文件来工作。

另见pid_namespaces(7):

创建新的 PID 命名空间后,子项 <...>在/proc 上挂载一个新的 procfs 实例 所以 像 ps(1) 这样的工具可以正常工作。

相关内容

  • 没有找到相关文章

最新更新