docker compose up后,ping不通宿主机
有两台服务器,上游nginx主机(ip:172.19.x.x)、下游nginx主机(172.17.x.x),某天发现从上游nginx主机ping不通下游nginx主机,回想最近在下游nginx主机上装过docker,细查发现,除了docker0网卡(ip:172.18.0.1),还有执行时创建的网卡br-4f284f2c67de(ip:172.19.0.1),与上游nginx主机是同一个网段,导致
问题背景
有两台服务器,上游nginx主机(ip:172.19.x.x)、下游nginx主机(172.17.x.x),某天发现从上游nginx主机ping不通下游nginx主机,回想最近在下游nginx主机上操作过docker compose up,细查发现,除了docker0网卡(ip:172.18.0.1),还有docker compose up执行时创建的网卡br-4f284f2c67de(ip:172.19.0.1),与上游nginx主机是同一个网段,导致失败。
分析
查阅资料得知,每个docker-compose.yml都会创建一个网络,相应创建的容器会连接这个网络,从而可以通信,因为宿主机是172.17.x.x网络,所以docker第一次创建网络docker0时,创建了172.18.x.x网络,docker compose up时,又创建一个新的网络172.19.x.x,恰好与局域网内172.19.x.x网段的服务器冲突,故此出现网络不通;解决思路是干掉这个网络。
解决
-
首先要,停掉容器并删除容器、删除网络
执行docker compose down -
其次,从根上解决,
docker-compose.yml中使用指定网络
version: '3'
services:
app1:
build: ./app1
networks:
- my_network
networks:
my_network:
driver: bridge
ipam:
driver: default
# 使用非局域网网段
subnet: 172.20.0.0/16
gateway: 172.20.0.1
docker创建容器情况下的解决办法
如果是使用docker创建的容器,可以使用docker network disconnect先将容器从网络中摘下来,然后使用docker network create创建指定网段网络,再使用docker network connect将容器与目标网络连接。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)