lxc-autostart不会在Debian 11 Bullseye中启动非特权容器。
Debian11Bullseye中的非特权容器的启动是在这个回答中通过使用lxc-unpriv-start而不是lxc-start来解决的,但是在使用lxc-autostart时我无法利用这种方法。
发布于 2021-12-30 17:04:08
好的,在几个不眠之夜之后,我为每个容器提供了一个简单的systemd单元文件。一个例子可能如下所示:
[Unit]
Description=Linux container my-container-name
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n my-container-name
ExecStop=/usr/bin/lxc-stop -n my-container-name
StandardOutput=journal
User=my-lxc-user
Group=my-lxc-user
Delegate=yes
[Install]
WantedBy=multi-user.targetDelegate=yes是对这里推荐的简单跟进,也是在我已经链接到的回答中进行的。
用户挥之不去,不需要(提到这里)。
这个解决方案的一个好的副作用是关闭(非特权的)容器不再延迟主机的关闭(如描述的这里),因为使用ExecStop中定义的/usr/bin/lxc-stop -n my-container-name而不是发送信号。
由于有了系统模板单元文件,可以对所有容器使用单个unif文件。最后一个模板单元文件如下所示:
[Unit]
Description=Linux container %I
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n %i
ExecStop=/usr/bin/lxc-stop -n %i
StandardOutput=journal
User=lxc
Group=lxc
Delegate=yes
[Install]
WantedBy=multi-user.target由于我将文件命名为lxc@.service并将其放置到/etc/systemd/system/中,所以可以使用systemctl COMMAND lxc@my-container-name.service控制所有容器。
(请注意,lxc.service是最初的,负责lxc-autostart的)
欢迎对单元文件等进行任何改进!-因为我不是专家,我基本上使用了官方文件和这个伟大的答案。
另一步是使用Systemd用户服务,因此在部署新容器时不需要充当root用户。
单元文件将略有不同:
[Unit]
Description=LXC container %I
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n %i
ExecStop=/usr/bin/lxc-stop -n %i
StandardOutput=journal
Delegate=yes
[Install]
WantedBy=default.target由于multi-user.target是用于用户服务的不可用,所以我们必须使用default.target。
这次必须启用用户滞留,以便服务在启动时启动,而不是在用户登录时启动。可以使用:loginctl enable-linger <my-lxc-user>从根帐户启用挥之不去。
我将服务文件保存到.config/systemd/user/lxc@.service,并使用systemctl --user enable lxc@my-container-name.service启用它。
https://unix.stackexchange.com/questions/684209
复制相似问题