如何将主机目录挂载到我的非特权 lxc
How to mount a host directoy to my unpriviledged lxc
我有一个 非特权 lxc 容器。我想将主机中的目录 ~/Project
挂载到 lxc。我试图修改 lxc 配置文件。以下是我的 lxc 配置文件:
# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: --dist archlinux --release current --arch amd64
# Template script checksum (SHA-1): 1ba3a6d6544626d6e64c7b8f1a51f6022c5e5f8f
# For additional config options, please look at lxc.container.conf(5)
# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)
# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.include = /usr/share/lxc/config/userns.conf
lxc.arch = x86_64
# Container specific configuration
#lxc.idmap = u 0 100000 65536
#lxc.idmap = g 0 100000 65536
lxc.idmap = u 0 100000 1000
lxc.idmap = g 0 100000 1000
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1
lxc.idmap = u 1001 101001 64535
lxc.idmap = g 1001 101001 64535
lxc.rootfs.path = dir:/var/lib/lxc/main_dev/rootfs
lxc.uts.name = main_dev
# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:47:f6:98
# Video configuration
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
#lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /tmp/.X11-unix mnt/x11 none bind,optional,create=dir
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file
# User
lxc.mount.entry = ~/Project /home/arch/test none bind 0 0
没用。
还有一种方法可以在 unprivileged lxc 中复制文件吗?我试图将文件复制到我的 lxc 屋顶。但是它没有出现在容器中。
注意:以下是我的 /etc/subuid 和 /etc/subgid(在主机中)的条目。
sahil:1000:1
sahil:100000:65536
1。关于宿主目录的挂载
在配置文件中,不允许使用“~”符号,因为它是 bash shell 特定符号,LXC 不使用 bash 来解释路径名。这必须替换为完整路径名(例如 /home/sahil/Project)。
挂载点应定义为容器根文件系统中的相对路径名。
如果容器的rootfs中还没有创建挂载点的路径名,建议加上create=dir
选项
因此挂载指令应该是这样的:
lxc.mount.entry = /home/sahil/Project home/arch/test none bind,create=dir 0 0
2。关于将文件从主机复制到容器
配置文件显示容器根文件系统的位置:
lxc.rootfs.path = dir:/var/lib/lxc/main_dev/rootfs
如果您需要将主机文件复制到容器中,您可以将文件复制到/var/lib/lxc/main_dev/rootfs.
中的任何(子)目录中
例如:
$ cp /home/sahil/example.txt /var/lib/lxc/main_dev/rootfs/some_place
如果“/var/lib/lxc/main_dev/rootfs/”由 root 拥有,您可能需要主机端的超级用户权限。你会在容器端看到复制的文件。
注意: 你的容器的 rootfs 的位置是不寻常的,因为非特权 LXC 容器的 rootfs 通常位于用户的主目录中。例如:/home/ /.local/share/lxc/ /rootfs
我有一个 非特权 lxc 容器。我想将主机中的目录 ~/Project
挂载到 lxc。我试图修改 lxc 配置文件。以下是我的 lxc 配置文件:
# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: --dist archlinux --release current --arch amd64
# Template script checksum (SHA-1): 1ba3a6d6544626d6e64c7b8f1a51f6022c5e5f8f
# For additional config options, please look at lxc.container.conf(5)
# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)
# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.include = /usr/share/lxc/config/userns.conf
lxc.arch = x86_64
# Container specific configuration
#lxc.idmap = u 0 100000 65536
#lxc.idmap = g 0 100000 65536
lxc.idmap = u 0 100000 1000
lxc.idmap = g 0 100000 1000
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1
lxc.idmap = u 1001 101001 64535
lxc.idmap = g 1001 101001 64535
lxc.rootfs.path = dir:/var/lib/lxc/main_dev/rootfs
lxc.uts.name = main_dev
# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:47:f6:98
# Video configuration
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
#lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /tmp/.X11-unix mnt/x11 none bind,optional,create=dir
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file
# User
lxc.mount.entry = ~/Project /home/arch/test none bind 0 0
没用。 还有一种方法可以在 unprivileged lxc 中复制文件吗?我试图将文件复制到我的 lxc 屋顶。但是它没有出现在容器中。
注意:以下是我的 /etc/subuid 和 /etc/subgid(在主机中)的条目。
sahil:1000:1
sahil:100000:65536
1。关于宿主目录的挂载
在配置文件中,不允许使用“~”符号,因为它是 bash shell 特定符号,LXC 不使用 bash 来解释路径名。这必须替换为完整路径名(例如 /home/sahil/Project)。
挂载点应定义为容器根文件系统中的相对路径名。
如果容器的rootfs中还没有创建挂载点的路径名,建议加上create=dir
选项
因此挂载指令应该是这样的:
lxc.mount.entry = /home/sahil/Project home/arch/test none bind,create=dir 0 0
2。关于将文件从主机复制到容器
配置文件显示容器根文件系统的位置:
lxc.rootfs.path = dir:/var/lib/lxc/main_dev/rootfs
如果您需要将主机文件复制到容器中,您可以将文件复制到/var/lib/lxc/main_dev/rootfs.
中的任何(子)目录中例如:
$ cp /home/sahil/example.txt /var/lib/lxc/main_dev/rootfs/some_place
如果“/var/lib/lxc/main_dev/rootfs/”由 root 拥有,您可能需要主机端的超级用户权限。你会在容器端看到复制的文件。
注意: 你的容器的 rootfs 的位置是不寻常的,因为非特权 LXC 容器的 rootfs 通常位于用户的主目录中。例如:/home/