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,脚本会处理其余的事情。此外,请确保将脚本包含在CMDDockerfileENTRYPOINT
笔记:需要该iproute2包。

这可能不是最完美的解决方案,但它可以完成工作。

相关内容