将块设备添加到 LXD 容器

将块设备添加到 LXD 容器

我想在容器中使用假块设备。我创建了循环设备并将磁盘添加到容器中,但我没有看到 /dev/ 目录列表。

# truncate -s 10G xfs.img
# mkfs.xfs xfs.img
# losetup -f xfs.img
# lxc config device add Cont01 BDisk disk source=/dev/loop0 path=/mnt/disk
# lxc exec Cont1 -- df -h
...
/dev/loop0                9.8G     36.0M      9.2G   0% /mnt/disk
# lxc exec Cont1 "ls /dev/ | grep loop"
#

我猜这与 apparmor 或安全策略有关。有人能建议一种让 LXC 访问假块设备的安全方法吗?

更新 挂载虚假块设备的方法:

$ lxc config device add ceph04 BDisk unix-block path=/dev/loop1

答案1

LXD GitHub 有很多与配置相关的文档。

https://github.com/lxc/lxd/blob/master/doc/configuration.md

在那里搜索“unix-block”你就会找到你需要的内容。

引文如下:

设备配置

LXD 将始终为容器提供标准 POSIX 系统运行所需的基本设备。这些设备在容器或配置文件配置中不可见,并且可能无法覆盖。

其中包括:

/dev/null (字符设备) /dev/zero (字符设备) /dev/full (字符设备) /dev/console (字符设备) /dev/tty (字符设备) /dev/random (字符设备) /dev/urandom (字符设备) /dev/net/tun (字符设备) /dev/fuse (字符设备) lo (网络接口)

任何其他内容都必须在容器配置或其配置文件之一中定义。默认配置文件通常包含一个网络接口,该接口将成为容器中的 eth0。

要向容器添加额外的设备,可以将设备条目直接添加到容器或配置文件中。

容器运行时可以添加或删除设备。

每个设备条目都由一个唯一名称标识。如果在后续配置文件或容器自己的配置中使用了相同的名称,则整个条目将被新定义覆盖。

设备条目通过以下方式添加:lxc config device add [key=value]...

= = = 结束引用 = = =

示例命令:

lxc 配置文件设备添加 [key=value]…

此外,如果您使用 LXD,我强烈建议您订阅 lxc-users 邮件别名,因为开发人员会监控该邮件并每天回答问答。

https://lists.linuxcontainers.org/

最后,Reddit 上有一个 LXD 子版块(如果您使用 Reddit?),它不是为了支持而存在,但确实提供了大量有关 LXD 的优秀信息。

https://www.reddit.com/r/LXD/

相关内容