我在 ubuntu 16.04 lxd 容器(通过以下命令创建:lxc launch images:ubuntu/xenial/amd64 mycont)内创建了一个 qcow2 磁盘(使用 qemu-img)。我已对其进行分区并使用 guestfish 对其进行格式化,没有任何问题。但当我想挂载它以填充文件时,我会执行以下命令...:
guestmount -a 磁盘.qcow2 -m /dev/sda1 /路径/安装/点
...我收到此错误:
*fusermount:安装失败:操作不允许
libguestfs:错误:fuser_mount:/path/mount/point:操作不允许*
在真正的 Ubuntu 上,同样的命令运行良好。事实上,guestfish 中的“mount”命令也运行良好。我快疯了,因为我找不到任何解决办法!
非常感谢!
答案1
我刚刚遇到了类似的问题,我需要 fuse 才能让 sshfs 在 lxd 客户机中运行。LXD 开发人员 (stgraber) 回复了错误报告是 ubuntu 内核限制了容器的挂载。
错误报告链接到本文:Ubuntu 16.04 中的容器挂载。
简而言之,你至少需要内核 4.4.0-6.21。在 lxd 主机上启用用户命名空间所需的内核模块对于 fuse 来说
# fuse
echo Y | sudo tee /sys/module/fuse/parameters/userns_mounts
# ext4 (see article for more information, not needed for sshfs)
#echo Y | sudo tee /sys/module/ext4/parameters/userns_mounts
然后创建一个配置文件,为 udev 和 aa_profile 创建所需的设备:
lxc profile create nsmount
lxc profile set nsmount raw.lxc lxc.aa_profile=unconfined
# expose these devices to the container
lxc profile device add nsmount fuse unix-char path=/dev/fuse
#lxc profile device add nsmount loop0 unix-block path=/dev/loop0
如果您正在创建新容器,请使用“-p”标志:
lxc launch ubuntu MyNewContainer -p default -p nsmount
如果您有现有容器使用应用:
lxc profile apply MyExistingContainer default,nsmount
如果您有其他特殊配置文件,请记得列出所有应用的配置文件。