Docker Compose - デフォルトゲートウェイルートを無効にする

Docker Compose - デフォルトゲートウェイルートを無効にする

docker-compose yaml ファイルを使用するときに、docker がデフォルト ルートを定義しないようにすることは可能ですか?

docker-compose.yaml がデフォルト ドライバーと任意のサブネットを持つネットワーク ipam を定義している場合、docker (または docker compose) は、このネットワークに接続されている docker のルーティング テーブルにデフォルト ルートを自動的に割り当てるようです。これを無効にする方法はありますか?

答え1

残念だけど違う。

同様の機能リクエスト(#20179) は GitHub リポジトリで 6 年近く公開されているため、この機能がすぐに実装されることはないと確信しています。

私の現在の回避策は、@Zoredache が述べたのと同様に、コンテナに bash スクリプトを追加し、環境変数を通じて目的のゲートウェイ IP アドレスを設定することです。スクリプトはデフォルト ルートを削除し、ゲートウェイとしてカスタム IP を使用して再度追加します。

編集:私の脚本の本質:

if [ -n "$GW" ]; then
    ip route delete default ;
    ip route add default via $GW ;
fi

コンテナのデフォルトゲートウェイを変更したい場合は、適切な環境変数でコンテナを実行するGW=192.168.0.1と、スクリプトが残りの処理を行います。さらに、DockerfileのCMDまたはのいずれかにスクリプトを含めるようにしてください。ENTRYPOINT
注記:パッケージが必要ですiproute2

最も美しい解決策ではないかもしれませんが、目的は達成できます。

関連情報