s3v*_*v3n 8 lvm file-transfer lxc
对于共享相同文件系统的容器,这是一项简单的任务,但我不确定使用 LVM 磁盘的容器的正确方法是什么。
我知道我可以使用rsync
或scp
,但我想知道是否有可能做到这一点,没有设置ssh
/ ftp
/http
服务器。此外,能够在不修改容器配置的情况下传输文件会很好,因为它需要重新启动容器。避免永久挂载共享文件夹是个好主意,因为这可能会带来潜在的安全风险(应该可以使用简单的挂载/卸载选项)。
我想到的一个选项是在主机上使用 WebDAV 服务器并将其安装在容器中,但我还没有分析它,我不确定它可能带来的性能损失。我认为的其他选项是在主机上安装 LVM 分区,但我不确定这是否安全。
在我的配置中,我使用以下命令创建容器:
lxc-create -t ubuntu -n "${NAME}" -B lvm --vgname lxc-vg --fssize "${SIZE}"
Run Code Online (Sandbox Code Playgroud)
除了自动启动功能外,我使用的是默认配置,该功能是通过将以下几行添加到/var/lib/lxc/${NAME}/config
文件中实现的:
lxc.start.auto = 1
lxc.start.delay = 0
Run Code Online (Sandbox Code Playgroud)
Tob*_*bia 12
修改后的答案:LXC 容器与主机共享相同的内核,因此它们安装的任何文件系统都应该可以从外部访问。
如果你cat /proc/mounts
在主机上做一个,你能看到容器文件系统吗?
如果您看到类似这样的行,/dev/mapper/... /var/lib/lxc/o1/rootfs ext4 ...
您应该能够/var/lib/lxc/o1/rootfs
从主机访问,而无需任何进一步的命令。
Lud*_*wig 11
我知道这是一个老问题,但是对于在搜索如何在主机和容器之间复制文件时最终在这里结束的人来说,这可能会有所帮助。
要将文件 'my-file' 从容器 'container-name' 拉到当前文件夹,请使用:
lxc file pull container-name/any-path/my-file .
Run Code Online (Sandbox Code Playgroud)
要推送“我的文件”,请使用:
lxc file push my-file container-name/any-path/
Run Code Online (Sandbox Code Playgroud)
要递归推送文件夹“my-dir”,请使用:
lxc file push -r my-dir container-name/any-path/
Run Code Online (Sandbox Code Playgroud)
小智 5
将数据从主机传输到 lxc-container 的一种更好的内置方式是以下代码中的第 4 行:
1 $ mkdir /tmp/transferDir
2 $ cp <some files> /tmp/transferDir/<some files>
3 $ cd /tmp
4 $ tar -C transferDir -c . | lxc-attach -n <container_name> -- /bin/sh -c "tar -C /tmp/ -vx; chmod 1777 /tmp;"
5 $ rm -r /transferDir
Run Code Online (Sandbox Code Playgroud)
这chmod 1777 /tmp
很重要,否则在该文件夹(容器/tmp)上的复制权限被更改后,您会遇到类似这样的常见问题,即 xyz-sql 服务器无法重新启动等。