linux - 在 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 容器中运行私有网络的任何建议?谢谢!
解决方案
推荐阅读
- javascript - React - 仅当所有文件都上传时才需要调用最终 api
- android - android - 是否可以在不更改整个应用程序的数字格式的情况下更改应用程序的语言环境?
- html - 为什么我的字体中的破折号是“信封”的真棒图标(下面的屏幕截图)
- angular - Dependent HTTP calls in angular service
- android - Android Studio 4.1 Canary 6 问题与 kapt 插件(e:java.lang.NoSuchMethodError:org.jetbrains.kotlin.codegen.state.GenerationState)
- python - 按时间序列数据中的条件查找时间段
- android - 有没有办法在自定义圆形按钮中实现霜玻璃效果?
- angular - 为什么使用 RxJS .asObservable() getter/factory 函数模式?
- javascript - 为什么全局变量没有更新以使用回溯存储子集?
- xcode - 无法将 IPA 上传到 MS App Center 进行分发