当前,我们正在将组合环境堆栈部署到ubuntu服务器。在compose文件中,我们没有定义地址,也没有利用docker compose随附的底层默认docker bridge网络。
服务器IP在10.x.x.x范围内。
docker0
默认情况下旋转为172.17.0.0
,并在我们服务器上的每个部署(172.18.0.0
,172.19.0.0
等)上增加第二个八位位组-没问题在那里。
但是,当它旋转并从我们的管道中部署时,当compose启动并运行时,会在服务器上创建另一个网络,它被命名为br-xxxxxxxxxxx
,其中x
是随机的字符。由于此br-
网络绑定到192.168.x.x
地址,因此在这里出现问题。
我的问题是,为什么docker守护进程为什么在部署撰写环境之前不推断冲突地址?
我可以验证这确实是一个问题,因为一旦发生,我就无法进入服务器。
提前谢谢!
这与我问的另一个问题有关,但这是我在研究此问题时发现的一个完全独立的问题,因此我决定发表一个单独的帖子。
答案 0 :(得分:1)
在/etc/docker/daemon.json文件中,您可以为默认网桥和用户创建的网桥网络指定以下内容:
{
"bip": "10.15.0.1/24",
"default-address-pools": [
{"base": "10.20.0.0/16", "size": 24},
{"base": "10.40.0.0/16", "size": 24}
]
}
我相信,这些地址池需要18.06,并定义了一个供docker在创建网桥网络时从中选择的池。如果docker没有看到到您要避免使用的专用网络的路由,这将很有用。
这是我最近在DockerCon上发表的提示技巧的一部分(您可以按“ P”作为演示者注释): https://sudo-bmitch.github.io/presentations/dc2019/tips-and-tricks-of-the-captains.html#21