为什么创建 Docker 网络会随机中断与 Jenkins 服务器的所有连接?

vct*_*tls 3 linux networking docker docker-compose

我正在使用 Jenkins 在另一台服务器上运行 docker-compose 项目并运行测试。安装 Docker 的服务器与 Jenkins 服务器不在同一子网。我们使用不同的服务器,因为后者是由第三方提供的,无法旋转容器。

Docker 服务器是 Red Hat 7.7,运行 Docker CE 19.03.1。

Jenkins 通过 ssh 连接到 Docker 服务器,然后运行 ​​docker-compose 命令。Docker 为项目创建了三个容器和一个默认网络。

一切都按预期进行,但偶尔,Jenkins 会失去与 Docker 服务器的所有连接。旋转容器后,当前作业将停止直至超时,通常会出现“管道损坏”错误。
从此以后,Jenkins就根本无法连接到Docker服务器了。任何端口上的所有连接都会超时。
直到我从我的电脑连接到它(由于某种原因我仍然可以),并手动停止并删除容器和网络。然后一切又恢复正常了。

问题似乎确实出在 Docker 网络上。但为什么它只会断开与 Jenkins 服务器的连接,而不断开我的 PC 的连接?为什么是随机的?

我知道这对于 SO 来说可能太模糊或太具体。我什至不知道从哪里开始调试。请在评论中告诉我应该添加哪些信息,或者我是否应该询问其他社区。

mas*_*eyb 5

docker可能会创建与您现有网络冲突的网络。例如: 在此输入图像描述

10.0.0.0/16往返流量10.1.0.0/16通过对等连接(默认网关)进行路由。

如果docker在子网中的实例上运行会创建一个具有 CIDR 的10.0.0.0/16桥接网络(即) ,那么您还将获得该流量的本地路由。br010.1.0.0

10.0.0.0/16尝试从到连接10.1.0.0/16将被路由到docker网络,而不是阻止您连接到子网中的实例的默认网关10.1.0.0/16

您可以创建具有固定子网/网关的docker网络docker network create --subnet=172.128.28.0/24 br0来避免这些问题,即: 。