我有一个由systemd管理的主机服务,它侦听Podman默认网络接口(cni-podman0
(,以便容器可以与之通信。
我遇到的问题是,Podman 仅在第一个容器启动时创建网络接口。这意味着当容器所依赖的主机服务启动时,网络接口不会启动,并且服务无法侦听它。
所以依赖链是: Podman 容器 -需要>主机服务 -需要> CNI 网络接口
但目前我知道的启动接口的唯一方法是启动容器。
如何让 systemd 告诉 Podman/CNI 启动默认的桥接网络接口,以便我可以在主机服务单元中依赖它?
是否有命令可以显式调出接口,我可以放入一个单元文件?
除非我误解了这个问题,否则可以在 systemd 服务文件中使用After
和Wants
参数。
打开您的服务文件,例如vim /etc/systemd/system/my_custom_daemon.service
并确保您具有以下各项:
[Unit]
After=network.target
Wants=network.target
如果不是您需要满足的主机网络作为先决条件,则需要创建自定义 systemd 目标并在After/Wants
中引用它。
我现在通过在主机服务依赖项中添加一个一次性 systemd 服务单元来解决它,该单元使用 Podman 运行一个立即退出的高山容器。这"欺骗"Podman调出桥接网络接口。
不那么黑客的解决方案仍然非常受欢迎。