使用 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
,脚本会处理其余的事情。此外,请确保将脚本包含在CMD
DockerfileENTRYPOINT
中
笔记:需要该iproute2
包。
这可能不是最完美的解决方案,但它可以完成工作。