使用 LXC 2.x 将主机文件夹挂载到来宾,但它是只读的吗?

使用 LXC 2.x 将主机文件夹挂载到来宾,但它是只读的吗?

注意:这个问题直接关系到这个特别是为了这个答案,但它不是重复的。

我想与来宾共享主机中的一个文件夹,但要确保来宾的根目录不会意外写入该文件夹。

/toolchains在我的例子中,主机和来宾上的文件夹都是 。它包含许多基于 GCC 的工具链,用于针对不同的平台。

现在分享本身是微不足道的:

lxc config device add CONTAINER toolchains disk source=/toolchains path=toolchains

从技术上讲,它似乎是一个绑定安装。但是,在容器内重新挂载以使其只读失败:

# mount -o remount,ro /toolchains
mount: cannot mount /dev/sda1 read-only

不幸的是,这并没有提供非常详细的信息。

为了更好地衡量,我也尝试了这个替代方案:

# mount -o remount,ro,bind /toolchains
mount: cannot mount /dev/sda1 read-only

在...mount(8)下提到过mount --bind,ro foo foo

我有哪些选择可以实现我想要的目标?即以只读方式与来宾共享主机文件夹。我应该在这里使用某种联合 FS 还是我获得只读挂载的唯一真正机会 1.) 使用 CIFS 共享或 2.) 使用一些钩子通过mount主机中的命令将主机文件夹绑定挂载到访客根?

我正在使用 LXC 2.20。

答案1

如果您将目录以只读方式绑定安装在主机上,然后与 LXC 容器共享,会发生什么情况?

mount --bind /toolchains /toolchains-ro
mount -o remount,ro,bind /toolchains-ro
lxc config device add CONTAINER toolchains disk source=/toolchains-ro path=toolchains

从技术上讲,主机级别上只读的所有内容在容器中都应保持只读。

相关内容