容器和syscall.CLONE_NEWNS

时间:2017-06-26 16:33:44

标签: go containers mount linux-namespaces

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

谢谢!

1 个答案:

答案 0 :(得分:0)

可以通过将主机安装配置为私有来解决此问题,未接收或将任何传播事件转发到其他安装,视频RedHat - Sharing Mounts

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

$ mount --make-rprivate /