如何从 lxc 挂载文件夹

Posted

技术标签:

【中文标题】如何从 lxc 挂载文件夹【英文标题】:how to mount a folder from lxc 【发布时间】:2014-04-30 18:19:26 【问题描述】:

我有 lxc,它有一个正在运行的应用程序。 要在自己的计算机(Ubuntu 13.10)上编辑此应用程序的代码,我想挂载一个目录 lxc。如何做到这一点?

例如

/var/lib/lxc/ubuntu_12_04/rootfs/home/

安装在 /mnt/lxc

【问题讨论】:

这和lxc没有太大关系。主机操作系统上的rootfs 目录只是一个常规目录,您可以从容器外部安全地写入它,您可以根据需要导出它(Samba、NFS 等) 【参考方案1】:

如果您想在每次启动 lxc 时自动挂载 lxc 内的目录,您可以使用 /var/lib/lxc/ubuntu_12_04/config 文件内的 lxc.mount.entry 目录。像这样的东西:

lxc.mount.entry = /mnt/lxc home/ none bind 0 0

这会将/mnt/lxc 挂载在lxc 根文件系统(又名rootfs)中home/ 目录中。

【讨论】:

【参考方案2】:

使用“mount --bind”

man 8 mount

-B, --绑定

Remount a subtree somewhere else (so that its contents are available in both places).

示例

# make a mount point
sudo mkdir /mnt/lxc

# mount existing directory on the mount point
mount --bind /var/lib/lxc/ubuntu_12_04/rootfs/home/ /mnt/lxc

注意事项

    即使没有挂载,Root 也可以访问 /var/lib/lxc/ubuntu_12_04/rootfs/home/。

    lxc 实例中的用户 ID 应等于主机中的用户 ID。否则,您可能需要更改用户 (su someother_username) 或更改文件所有权 (chown myuser: somefile.txt。) Ubuntu 默认以相同的用户 ID 启动,因此如果您在两个地方都使用默认用户,则用户 ID 应该相等。

    要检查文件上的用户 ID,请使用 ls --numeric-uid-gidls -n。下面您会看到用户 ID 和组 ID 为 1042。

    # show user and group ids
    ls -n
    -rw-r--r-- 1 1042 1042   0 May  15 15:31 example.txt
    

【讨论】:

以上是关于如何从 lxc 挂载文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux 上从包含多个分区的映像文件中挂载一个分区?

如何将文件夹从我的主机挂载到自定义 docker 映像,在目录中使用 Dockerfile 进行设置? [复制]

Android:如何从我的 APK 中将文件系统挂载到 RW 中? (当然是有根的)

核心文件存储在 lxc 容器中的啥位置?

虚拟化进阶管理

3.Docker与LXC虚拟化技术的区别——虚拟化技术本质上是在模拟硬件,Docker底层是LXC,本质都是cgroups是在直接操作硬件