在 Virtuozzo 中运行 LXD 并不完全可行(可能与在另一个 LXD 中运行 LXD 类似)。
Virtuozzo 主机是一项 VPS 主机服务(不受我的控制)。
VPS 客户端运行的是 Ubuntu Server 16.04,我成功安装了 LXD 并对其进行了初始化,直到它显示为空lxc list
。
然后我尝试启动一个图像:lxc launch images:ubuntu/artful artful
,但是失败并提示:
错误:LXD 没有 uid/gid 分配。在此模式下,仅支持特权容器。
报告称cat /var/log/lxd/lxd.log
:
lvl=warn msg="Couldn't find the CGroup pids controller, process limits will be ignored." t=2017-07-26T10:11:35+0900
lvl=info msg="Kernel uid/gid map:" t=2017-07-26T10:11:35+0900
lvl=info msg=" - u 0 0 0" t=2017-07-26T10:11:35+0900
lvl=info msg=" - g 0 0 0" t=2017-07-26T10:11:35+0900
lvl=info msg="Configured LXD uid/gid map:" t=2017-07-26T10:11:35+0900
lvl=info msg=" - u 0 100000 65536 (unusable)" t=2017-07-26T10:11:35+0900
lvl=info msg=" - g 0 100000 65536 (unusable)" t=2017-07-26T10:11:35+0900
lvl=warn msg="One or more uid/gid map entry isn't usable (typically due to nesting)" t=2017-07-26T10:11:35+0900
lvl=warn msg="Only privileged containers will be able to run" t=2017-07-26T10:11:35+0900
lvl=info msg="Connecting to a remote simplestreams server" t=2017-07-26T10:11:35+0900
然后我尝试以特权模式运行容器:
lxc launch images:ubuntu/artful artful -c security.nesting=true -c security.privileged=true
安装成功,但是无法启动:
error: Error calling 'lxd forkstart artful /var/lib/lxd/containers /var/log/lxd/artful/lxc.conf': err='Failed to run: /usr/bin/lxd forkstart artful /var/lib/lxd/containers /var/log/lxd/artful/lxc.conf: '
lxc 20170726020609.465 ERROR lxc_cgfs - cgroups/cgfs.c:lxc_cgroupfs_create:901 - Could not find writable mount point for cgroup hierarchy 4 while trying to create cgroup.
lxc 20170726020609.465 ERROR lxc_cgfs - cgroups/cgfs.c:cgroup_rmdir:209 - Device or resource busy - cgroup_rmdir: failed to delete /sys/fs/cgroup/systemd//system.slice/lxd.service
这一切都表明 Virtuozzo 容器正在运行unprivileged
,因此 LXD 出现故障。
我想知道在这种情况下这对 LXD 来说是否是死路一条,或者是否还有机会让它发挥作用?
答案1
Virtuozzo 基于 OpenVZ(你可以查看https://wiki.openvz.org/FAQ)。他们使用旧内核(基于 2.6),没有 Docker/LXC/LXD 所需的 cgroups 功能。所以你的尝试不会成功。Virtuozzo 已经在使用容器技术(OpenVZ),但尚未与主线内核代码合并。