首页 > 解决方案 > 在 nspawn 容器中运行时,具有私有网络的 Systemd 服务失败

问题描述

我正在运行一个 systemd nspawn 容器,并注意到许多内置的 systemd 服务都处于失败状态。经过调查,我发现失败的服务都在使用PrivateNetwork=yes. 查看服务的日志,服务似乎无法创建PrivateNetwork指令请求的网络命名空间。

我试图授予Capabilities=all我的 nspawn 容器,但仍然遇到同样的问题。

Nspawn 容器配置:

[Exec]
Boot=true
ResolvConf=off
Timezone=off

[Files]
Bind=/usr/bin/qemu-arm-static
PrivateUsersChown=true

[Network]
VirtualEthernet=false

这是一个显示问题的示例 systemd 单元:

[Unit]
Description=Test

[Service]
ExecStart=/usr/bin/sleep infinity
PrivateNetwork=yes

这是systemctl status我尝试在 nspawn 容器中运行上述单元后的输出:

x example.service - Test
     Loaded: loaded (/etc/systemd/system/example.service; static)
     Active: failed (Result: exit-code) since Fri 2021-04-02 18:36:31 PDT; 3s ago
    Process: 414 ExecStart=/usr/bin/sleep infinity (code=exited, status=225/NETWORK)
   Main PID: 414 (code=exited, status=225/NETWORK)

Apr 02 18:36:31 panamint systemd[1]: Started Test.
Apr 02 18:36:31 panamint systemd[414]: example.service: Failed to set up network namespacing: Input/output error
Apr 02 18:36:31 panamint systemd[414]: example.service: Failed at step NETWORK spawning /usr/bin/sleep: Input/output error
Apr 02 18:36:31 panamint systemd[1]: example.service: Main process exited, code=exited, status=225/NETWORK
Apr 02 18:36:31 panamint systemd[1]: example.service: Failed with result 'exit-code'.

主机操作系统是运行 systemd 248 的 arch linux 5.11.11,来宾是运行 qemu 仿真和 systemd 版本 248 的 arch linux ARM 5.10.25。

关于如何在 nspawn 容器中运行私有网络的任何建议?谢谢!

标签: linuxsystemdlinux-capabilities

解决方案


推荐阅读