如何从 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-gid
或 ls -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 中? (当然是有根的)
3.Docker与LXC虚拟化技术的区别——虚拟化技术本质上是在模拟硬件,Docker底层是LXC,本质都是cgroups是在直接操作硬件