我目前正在与一个小团队使用 Docker-Compose 进行开发。我将描述我们目前面临的设置和场景。
我们在 VCS 中签入了一个项目。开发人员签出该项目并执行“docker-compose up”,所有这些都在单个主机上,但在主文件夹中。这将创建默认网络并自动为新的默认网络分配一个子网(到目前为止,因此是“docker-compose”)。这对我们来说非常有用,因为它将开发环境彼此隔离,并允许我们使用命名服务访问 Compose 文件中的数据库等 - 所有这些都无需干预,开发人员也不需要手动配置任何东西。
问题是;此默认网络具有不断增加的子网 172.*.0.0。这很好,直到我们到达当前在公司网络上使用的子网。例如:我们的 VPN 使用 172.19.0.0。我们有大约 4 或 5 个这样的子网,一旦有足够的开发人员启动堆栈,我们就会遇到这些子网,从而产生访问问题。
其他人如何使用 Docker Compose 来管理这种情况以进行开发?
本质上,我们有许多运行 Docker 的主机,其中有许多不同的应用程序,每个应用程序都有许多开发人员。在 Compose 文件中为每个用户、每个应用程序定义一个子网(以确保所有子网都是唯一的,无论主机如何)将成为一场绝对的管理噩梦,并且可能成为电子表格管理的一项练习。
我甚至找不到强制 Docker-Compose 使用不同子网范围的方法,例如 10.0.0.0 等 - 这在我们的公司网络上是没问题的。
任何有关此类配置的帮助都将不胜感激。肯定其他人也使用 Docker-Compose 来创建开发环境吧?
问候
答案1
Docker 18.06 引入了该--default-address-pool
选项--subnet
。通过它,您可以指定用户定义网络默认使用的地址范围(如果未使用网络参数明确设置) 。您可以查看已实现和讨论该功能的拉取请求以获取更多信息:莫比/29376,莫比/36054,莫比/36396,
--default-addr-pool
此标志指定全局范围网络的默认子网池。格式示例为
--default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16
答案2
docker 网络的配置不在于 docker compose,而在于守护进程配置本身。您想要做的是更改 docker 使用的默认网络,这可以通过在--bip=10.110.0.1/16
docker 守护进程启动脚本中传递(注意最后的 1,因为您需要一个有效的 IP 供 docker 绑定)来完成。
由于你没有提供有关操作系统的信息,你可以尝试执行
docker daemon --bip=10.110.0.1/16
将网络更改为 10.110.0.0/16
在我的 OpenSuse 框中,我编辑了/etc/sysconfig/docker
我所设置的位置DOCKER_OPTS="--bip=10.110.0.1/16"
以获得相同的结果。
请参阅官方文档以获取更多说明: