从主机访问 LXC 容器的文件系统

从主机访问 LXC 容器的文件系统

我正在寻找一种从主机访问容器根文件系统的方法。虽然我可以使用传递给 lxc.rootfs 的目录,但它没有容器所具有的挂载,因此只有空目录而不是挂载。有没有办法获取与容器根目录相同的文件树?

谢谢 :)

答案1

我使用以下方法进行备份rsync

使用容器的 init 进程的 pid,你可以使用以下命令获取它

# list all hosts:
lxc-ls -f -Fname,pid

# or get pid of one host:
lxc-ls -f -Fpid mycontainer
PID    
-----
13323

使用此信息,您可以使用 /proc 文件系统访问主机的 rootfs。

cat /proc/13323/root/etc/hostname
# returns: "mycontainer"

答案2

我能找到的最佳解决方案是在主机和容器内应用相同的挂载(通过 lxc.mount[.entry])。主机的挂载不会传输到容器,因为容器与主机的挂载完全隔离。

答案3

lxd 存储挂载位置主机上的情况可能会有所不同,具体取决于您是否使用 snap 包。snap 还使用不同的挂载命名空间,因此您必须通过 mntns 目录访问它:

#Non snap location on host:
ls /var/lib/lxd/storage-pools/STORAGE_POOL_NAME/containers/CONTAINER_NAME/rootfs/

#Snap location on host:
ls /var/snap/lxd/common/mntns/var/snap/lxd/common/lxd/storage-pools/STORAGE_POOL_NAME/containers/CONTAINER_NAME/rootfs/

相关内容