シェル スクリプトを実行するサービス ファイルがあり、そのスクリプトは 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
使用されたオプションのドキュメント:
このサービスによって実行されるスクリプトは、Dockerコンテナがeth0のデフォルトではなくeth0:1のIPアドレスを使用するようにiptables SNATルールを追加します。つまり、https://serverfault.com/a/686107。