3

我在这个 repo https://github.com/lizrice/containers-from-scratch/blob/master/main.go上运行 golang 代码,我遇到了挂载命名空间的问题。代码应该做的是在自己的挂载命名空间中创建一个进程。因此,如果我运行代码sudo go run main.go run /bin/bash并在目录中创建一个文件mytemp,我应该能够从新启动的进程中看到该文件,但是如果我尝试查看该文件移动到主机上的 rootfs 目录,我应该由于挂载命名空间,无法看到该文件。不幸的是我仍然看到这个文件,所以我运行的进程似乎没有挂载命名空间。为了运行代码,我使用了这个https://github.com/ericchiang/containers-from-scratch/releases/download/v0.1.0/rootfs.tar.gz作为 rootfs 并将其移至/home/me. 然后我创建了一个mytemp目录用作 tmpfs 挂载目标。您对进程没有安装命名空间的原因有任何想法吗?

谢谢!

4

1 回答 1

2

这个问题可以通过将主机挂载配置为不接收或转发任何传播事件到其他挂载的私有挂载来解决,参见 RedHat-Sharing Mounts

在创建容器之前,应在主机上执行此命令:

$ mount --make-rprivate /
于 2017-08-05T17:02:17.717 回答