我有一个服务文件,它执行一个shell脚本,该脚本需要在docker启动后执行。这是我尝试过的,但脚本启动时无需等待 docker.service:
[Unit]
Description=network configuration service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/etc/systemd/system/
Type=oneshot
ExecStart=/bin/bash netset.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
答案1
这是我在 docker.service 启动后运行的服务单元配置文件,并且每当 docker.service 重新启动时也会重新运行:
[Unit]
Description=Floating IP
After=docker.service
BindsTo=docker.service
ReloadPropagatedFrom=docker.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/floating-ip.sh
ExecReload=/usr/local/bin/floating-ip.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
使用的选项的文档:
该服务执行的脚本添加了一条 iptables SNAT 规则,使 Docker 容器使用 eth0:1 上的 IP 地址,而不是 eth0 上的默认地址,即将该方法保留在https://serverfault.com/a/686107。