1

我有一个由 systemd 管理的主机服务,它侦听 Podman 默认网络接口 ( cni-podman0),以便容器可以与之通信。

我遇到的问题是 Podman 仅在第一个容器启动时创建网络接口。这意味着当容器所依赖的主机服务启动时,网络接口没有启动,服务无法监听它。

所以依赖链是:Podman 容器 -needs> Host Service -needs> CNI 网络接口

但目前我知道调出界面的唯一原因是启动容器。

如何让 systemd 告诉 Podman / CNI 启动默认的桥接网络接口,以便我可以在主机服务单元中依赖它?

是否有明确显示界面的命令,我可以放入一个单元文件?

4

2 回答 2

1

除非我误解了这个问题,否则可以在您的 systemd 服务文件中使用Afterand参数。Wants

打开您的服务文件,例如vim /etc/systemd/system/my_custom_daemon.service并确保您具有以下内容:

[Unit]
After=network.target
Wants=network.target

如果它不是您需要作为先决条件满足的主机网络,那么您需要创建一个自定义 systemd 目标并在您的After/Wants.

于 2020-06-14T09:54:50.563 回答
0

我现在通过向主机服务依赖项添加一个 oneshot systemd 服务单元来解决这个问题,该服务单元使用 Podman 运行一个立即退出的 alpine 容器,该依赖项使用 Podman 运行一个立即退出的 alpine 容器。这会“欺骗”Podman 启动桥接网络接口。

不那么老套的解决方案仍然非常受欢迎。

于 2020-06-14T14:58:03.090 回答