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,腳本將處理其餘的內容。此外,請確保將該腳本包含在您的 DockerfileCMDENTRYPOINT
筆記:需要iproute2包。

可能不是最漂亮的解決方案,但它可以完成工作。

相關內容