Eu tenho um arquivo de serviço, que executa um script de shell, e o script precisa ser executado após o início do docker. Aqui está o que tentei, mas o script é iniciado sem esperar pelo 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
Responder1
Este é o arquivo de configuração da unidade de serviço que tenho, que é executado após o docker.service ser ativado e também é executado novamente sempre que o docker.service é reiniciado:
[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
Documentação das opções utilizadas:
O script executado por este serviço adiciona uma regra SNAT iptables para fazer com que os contêineres Docker usem o endereço IP em eth0:1 em vez do padrão em eth0, ou seja, persistindo a abordagem emhttps://serverfault.com/a/686107.