У меня есть файл службы, который выполняет скрипт оболочки, и скрипт должен быть выполнен после запуска 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
Документация используемых опций:
Скрипт, выполняемый этой службой, добавляет правило SNAT iptables, чтобы заставить контейнеры Docker использовать IP-адрес на eth0:1 вместо IP-адреса по умолчанию на eth0, т.е. сохраняя подходhttps://serverfault.com/a/686107.