LXC:主机公开的文件在 rootfs 目录中具有 000 权限

LXC:主机公开的文件在 rootfs 目录中具有 000 权限

我有以下内容,/var/lib/lxc/container1/config以便我的容器可以从主机看到该文件。

lxc.mount.entry = /etc/someconf.conf etc/someconf.conf none bind,create=file 0 0

我可以在容器中看到它,并且它644在那里有权限,但是这是我从主机看到的。

root@node01:~# ls -l /var/lib/lxc/container1/rootfs/etc/someconf.conf 
---------- 1 root root 0 Jul  16 11:29 /var/lib/lxc/container1/rootfs/etc/someconf.conf

您知道为什么会这样,如何解决它或者是否有更好的方法。

答案1

您会看到第一次根据请求 ( create=file) 创建的基本文件,因为它不存在,将在该文件上应用绑定挂载。

在容器命名空间中,不会看到这个空文件,因为它被主机/etc/someconf.conf安装在其上的实际文件覆盖。是的,您可以在目录上绑定挂载目录,或者一个文件上一个文件。

要获得容器看到的文件系统的实际视图,但仍从主机看到,您可以使用/proc/[pid]/root/快捷方式,该快捷方式将提供 PID [pid] 的进程看到的视图(如在主机上看到的),即在容器的挂载命名空间中。

lxc-info用于以编程方式获取此类 PID(容器的初始 PID 在容器内被视为 PID 1)。对于正在运行的容器,foo以下命令仅输出从主机看到的其 PID:

lxc-info -H -p -n foo

因此,要从容器的角度但仍然从主机的角度查看文件,完整的命令变为:

ls -l /proc/$(lxc-info -H -p -n foo)/root/etc/someconf.conf

可以使用相同的方法轻松地在主机和容器上的“不可见”文件系统之间移动文件,例如临时文件系统安装/tmp在容器内。

相关内容