systemd: So führen Sie den Dienst nach docker.service aus

systemd: So führen Sie den Dienst nach docker.service aus

Ich habe eine Servicedatei, die ein Shell-Skript ausführt, und das Skript muss ausgeführt werden, nachdem Docker gestartet wurde. Folgendes habe ich versucht, aber das Skript wird gestartet, ohne auf docker.service zu warten:

[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

Antwort1

Dies ist die Konfigurationsdatei der Service-Unit, die ich habe und die ausgeführt wird, nachdem docker.service aktiv ist, und die auch jedes Mal erneut ausgeführt wird, wenn docker.service neu gestartet wird:

[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

Dokumentation der genutzten Optionen:

Das von diesem Dienst ausgeführte Skript fügt eine iptables SNAT-Regel hinzu, damit Docker-Container die IP-Adresse auf eth0:1 anstelle der Standardadresse auf eth0 verwenden, d. h. den Ansatz beibehalten beihttps://serverfault.com/a/686107.

verwandte Informationen