docker compose up后,ping不通宿主机

问题背景

有两台服务器,上游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将容器与目标网络连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值