Docker 在从管道部署组合环境到服务器时创建与内部网络冲突的 IP 地址

Tho*_*mas 3 networking docker docker-compose

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

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

docker0默认情况下,旋转起来的172.17.0.0和增量的第二个字节每个部署(172.18.0.0172.19.0.0,等),我们的服务器上-没有问题出现。

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

我的问题是,为什么 docker daemon 在部署 compose 环境之前不推断冲突地址?

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

先感谢您!


这与我问的另一个问题有关,但这是我在解决此问题时注意到的一个完全独立的问题,因此我决定单独发表一篇文章。

相关问题的链接:当 docker daemon 在部署组合环境时用完要分配的网络 IP 地址时会发生什么?

BMi*_*tch 6

在 /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}
  ]
}
Run Code Online (Sandbox Code Playgroud)

这些地址池需要 18.06,我相信,并定义一个池供 docker 在创建桥接网络时选择。如果 docker 没有看到您希望避免使用的专用网络的路由,这将非常有用。

这是我最近在 DockerCon 上的提示和技巧演讲的一部分(您可以按“P”获取演讲者备注):https ://sudo-bmitch.github.io/presentations/dc2019/tips-and-tricks-of- the-captains.html#21