Kra*_*out 4 debian container lxc
我已经重新安装了 Debian 11。关于 LXC,我复制了 Debian 10 计算机的工作设置。我使用一个单独的用户,lxcuser我su要,到lxc-start。
配置,~/.config/lxc/default.conf
lxc.idmap = u 0 165536 65536
lxc.idmap = g 0 165536 65536
lxc.apparmor.profile = unconfined
lxc.mount.auto = proc:mixed sys:ro cgroup:mixed
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:FF:xx:xx:xx:xx
#lxc.include = /etc/lxc/default.conf
Run Code Online (Sandbox Code Playgroud)
文件系统权限是使用 ACL 设置的,就像我在之前的设置中所做的那样。
lxc-checkconfig
LXC version 4.0.6
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-5.10.0-7-amd64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
--- Control groups ---
Cgroups: enabled
Cgroup v1 mount points:
Cgroup v2 mount points:
/sys/fs/cgroup
Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup namespace: required
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled, not loaded
Macvlan: enabled, not loaded
Vlan: enabled, not loaded
Bridges: enabled, loaded
Advanced netfilter: enabled, loaded
CONFIG_NF_NAT_IPV4: missing
CONFIG_NF_NAT_IPV6: missing
CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, not loaded
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded
FUSE (for use with lxcfs): enabled, loaded
--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
Run Code Online (Sandbox Code Playgroud)
使用调试选项运行后,我想我已经确定了这些行上的错误:
DEBUG cgfsng - cgroups/cgfsng.c:cgfsng_monitor_create:1355 - Failed to create cgroup "(null)"
WARN cgfsng - cgroups/cgfsng.c:mkdir_eexist_on_last:1152 - Permission denied - Failed to create directory "/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scope/lxc.monitor.arch"
Run Code Online (Sandbox Code Playgroud)
更改/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scope目录的权限没有效果;usingsudo也不能在那里写。
我相信这个问题的出现是由于cgroupv2Debian 11 上默认启用了该功能。我尝试了在网上找到的各种解决方法,但到目前为止没有任何效果。
有任何想法吗?要么让非特权 LXC 与 cgroupv2 一起工作,要么以正确的方式在 Debian 11 上禁用 cgroupv2 并启用 cgroupv1(或模仿 Debian 10 的 cgroup 设置)。当然欢迎其他解决方案!
一些链接:
同样的问题,未得到解答
我的博客介绍了如何在 Debian 10 上设置非特权 LXC,复制了设置
更新:添加systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false"到内核参数有助于启动容器。但我仍然从容器内部收到此错误:
拱门Linux:
Welcome to Arch Linux!
Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object.
Exiting PID 1...
Run Code Online (Sandbox Code Playgroud)
森托斯 8:
Welcome to CentOS Linux 8!
Failed to read AF_UNIX datagram queue length, ignoring: No such file or directory
Failed to install release agent, ignoring: No such file or directory
Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object, freezing.
Freezing execution.
Run Code Online (Sandbox Code Playgroud)
Debian bullseye LXC 软件包的最新版本(2021 年 6 月 11 日星期五发布的 1:4.0.6-2)最近对Debian 11 中使用 cgroup v2 和 LXC 4.x 启动非特权容器的变化发出了警告:
\n\n\nlxc (1:4.0.6-2) 不稳定;紧急程度=中
\n\n
\n- 已通过和命令
\n
提供了一种处理非特权容器启动和附加的新方法。请参阅了解更多详情。lxc-unpriv-startlxc-unpriv-attach/usr/share/doc/lxc/README.Debian.gz-- Pierre-Elliott B\xc3\xa9cue peb@debian.org 2021 年 6 月 11 日星期五 15:12:15 +0200
\n
自述文件中的第一部分似乎已经由 OP 解决。OP 问题的相关部分位于7) 启动容器:
\n\n\n\n
\n- 启动容器
\n在统一组层次结构下(systemd 中默认从 Debian 11/bullseye 开始),非 root 用户需要 lxc-start 才能拥有一些\n额外的权限才能以非 root 用户身份启动容器。最简单的方法是通过 systemd。您可以通过设置属性的用户定义服务来启动容器
\nDelegate=true,或者使用 system-run 显式执行此操作:Run Code Online (Sandbox Code Playgroud)\n$ systemd-run --scope --quiet --user --property=Delegate=yes \\\n lxc-start -n mycontainer\n或者,最后,您可以使用 Debian 提供的帮助程序脚本:\n
\nlxc-unpriv-start。它会关心正确使用systemd-run命令,并确保正确设置所需的环境变量。
“3)权限检查”部分也值得一提(具有要适应的正确值):
\n$ setfacl --modify user:100000:x . .local .local/share\nRun Code Online (Sandbox Code Playgroud)\n使用 systemd 或 Debian 包装器的示例:
\n$ lxc-create -n busybox-amd64 -t busybox\n\n$ lxc-start -n busybox-amd64\nlxc-start: busybox-amd64: lxccontainer.c: wait_on_daemonized_start: 859 Received container state "ABORTING" instead of "RUNNING"\nlxc-start: busybox-amd64: tools/lxc_start.c: main: 308 The container failed to start\nlxc-start: busybox-amd64: tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode\nlxc-start: busybox-amd64: tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options\n\n$ systemd-run --scope --quiet --user --property=Delegate=yes lxc-start -n busybox-amd64\n$ lxc-ls --active\nbusybox-amd64 \n$ lxc-stop -n busybox-amd64\n\n$ lxc-unpriv-start -n busybox-amd64\nRunning scope as unit: run-r1c8a4b4fd0294f688f9f63069414fbf0.scope\n$ lxc-ls --active\nbusybox-amd64 \nRun Code Online (Sandbox Code Playgroud)\n这些信息以前只是隐藏在一些错误报告中,而且很难放在一起:
\n笔记:
\n当然,这同样可以成功启动真正的操作系统(Debian、CentOS ...)。
\n作为旁注,与本问答无关,今天(2021-06-26)使用下载模板,似乎hkp://pool.sks-keyservers.net已停止服务。要创建模板,我必须首先执行此操作以覆盖以下位置中的默认密钥服务器 URL /usr/share/lxc/templates/lxc-download:
$ export DOWNLOAD_KEYSERVER=hkp://keys.openpgp.org\n$ lxc-create -n centos8-amd64 -t download -- --d centos -r 8 -a amd64\n[...]\nYou just created a Centos 8 x86_64 (20210626_07:08) container.\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4748 次 |
| 最近记录: |