
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
。
最も美しい解決策ではないかもしれませんが、目的は達成できます。