【Docker】记录一次使用docker部署dify网段冲突的问题
记录一次使用docker部署dify网段冲突的问题
- 1. 情况描述
- 2. 问题根源
- 3. 解决方案
1. 情况描述
-
有一台服务器,一个路由器,一个本地Windows电脑;
-
服务器连接到路由器中;路由器本身在内网的IP为
172.19.xxx.xxx
;服务器在路由器子网下的IP为192.168.xxx.xxx
; -
服务器通过路由器的端口映射将
22
端口暴露出来,本地Windows电脑通过172.19.xxx.xxx:22
使用SSH连接到服务器; -
docker部署dify,命令为
docker compose up -d
,服务全部启动后,SSH连接突然断开,怎么连都连不上; -
查询各种资料无果,最后AI提出网段冲突的问题,遂排查。
2. 问题根源
-
确实是docker的网段冲突问题;
-
不是简单的网段冲突问题,而是docker误以为本地网段为192.168.xxx.xxx,于是直接使用默认的172.17.xxx.xxx网段;
-
由于当前已经存在172.17.xxx.xxx、172.18.xxx.xxx、172.20.xxx.xxx的容器,docker在启动dify时自动顺延至172.19.xxx.xxx网段,导致docker网络地址与路由器网关地址冲突,于是SSH连接断开;
注:
1. 为什么已经存在其他没有冲突的网段(17,18,20)?因为这台服务器之前是没有接路由器的,直接暴露在内网中,IP是172.19.xxx.xxx,docker在部署其他容器时自动避开了冲突网段;
2. docker是会自动检查网段冲突的:与AI的表述不同,实践上来看,docker确实会自动检查网段冲突。
3. 解决方案
修改/etc/docker/daemon.json
,添加:
{"default-address-pools": [{"base": "172.80.0.0/16","size": 24}]
}
其中172.80.0.0/16
可以是其他不冲突的自定义网段。