从管道向服务器部署撰写环境时,Docker创建一个与内部网络冲突的IP地址

时间:2019-05-01 22:49:59

标签: docker networking docker-compose

当前,我们正在将组合环境堆栈部署到ubuntu服务器。在compose文件中,我们没有定义地址,也没有利用docker compose随附的底层默认docker bridge网络。

服务器IP在10.x.x.x范围内。

docker0默认情况下旋转为172.17.0.0,并在我们服务器上的每个部署(172.18.0.0172.19.0.0等)上增加第二个八位位组-没问题在那里。

但是,当它旋转并从我们的管道中部署时,当compose启动并运行时,会在服务器上创建另一个网络,它被命名为br-xxxxxxxxxxx,其中x是随机的字符。由于此br-网络绑定到192.168.x.x地址,因此在这里出现问题。

我的问题是,为什么docker守护进程为什么在部署撰写环境之前不推断冲突地址?

我可以验证这确实是一个问题,因为一旦发生,我就无法进入服务器。

提前谢谢!


这与我问的另一个问题有关,但这是我在研究此问题时发现的一个完全独立的问题,因此我决定发表一个单独的帖子。

相关问题的链接:What happens when docker daemon runs out of network IP addresses to allocate when deploying compose environments?

1 个答案:

答案 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