LXC:如何将文件夹从主机挂载到容器?

LXC:如何将文件夹从主机挂载到容器?

我正在尝试将主机上的文件夹挂载到 LXC 容器。

主机/mnt/ssd/solr_data创建了一个文件夹(当前位于根文件系统上,但稍后我将在那里安装 SSD 驱动器,所以我正在为此做好准备)。

/data我希望该文件夹像在容器中一样安装。

所以在容器 fstab 文件中我有以下内容:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        ext4    defaults,noatime        0       0

但这是不行的,我在启动容器时收到此错误:

lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'

答案1

要在容器中自动创建目录,您还可以create=dir在 fstab 中添加选项:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind,create=dir

编辑:这是 LXC 特有的。看这个线程

就像我们已经有“可选”一样,这添加了两个新的 LXC 特定的安装标志:

  • create=dir (将在路径上执行 mkdir_p)

  • create=file(将在目录名上执行 mkdir_p + 在路径上执行 fopen)

这是由非特权容器所需的一些绑定安装驱动的。

答案2

添加/var/lib/lxc/Solr4StandAlone/config一行:

lxc.mount.entry = /mnt/ssd/solr_data  /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0

然后再次lxc-stop停止你的容器和lxc-start你的容器。

这就是所需要的一切。

参考:参考链接

答案3

截至 2015 年 9 月 30 日,安全补丁导致的更改破坏了配置文件中 lxc.mount.entry 的绝对路径安装。

相反,你可以使用相对路径

 lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0

看:https://wiki.debian.org/LXC#Bind_mounts_inside_the_container

答案4

由于 LXC 随着时间的推移而发生了变化,这可能非常简单,但它让我有点困惑,所以想做出贡献。我还为此创建了一个要点,这样我就可以记住自己,但只需使用 lxc 配置设备就可以解决问题。

sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data

笔记由于 @biscuitNinja 提到的更改,将路径参数中的前斜杠保留很重要

将目录从容器挂载到主机

相关内容