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

时间:2019-08-30 07:42:12

标签: linux docker networking 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服务器。任何端口上的所有连接都只是超时。
在我出于某种原因仍然可以从PC连接到计算机之前,手动停止并删除容器和网络。然后,一切又恢复正常了。

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

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

1 个答案:

答案 0 :(得分:1)

docker受制于与您现有网络冲突的网络。例如: enter image description here

10.0.0.0/1610.1.0.0/16并返回的流量通过对等连接(默认网关)进行路由。

如果docker在以下位置的实例上运行  10.0.0.0/16子网将使用CIDR br0创建一个桥接网络(即10.1.0.0),然后您还将获得该流量的本地路由。

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

您可以创建具有固定子网/网关的docker network来避免这些问题,例如:10.1.0.0/16