Docker-Compose的地址与公司网络冲突

在上一次安装了Docker后,Docker会默认创建一个网卡,指定其中的地址,这个生成的地址与默认的存在冲突,通过修改Docker的配置文件,已经顺利将问题解决,请查看《Docker CentOS 网段与公司网段冲突

在安装了Docker后,使用Docker-Compose发布应用,一直都可以正常使用,使用一段时间后,在公司突然发现无法连接到服务器了!

这下有点慌了,正常来讲,我安装Docker时,已经正常的处理了IP地址的问题,怎么还会出现冲突呢?

通过查看服务器的现有网卡,可以看到,确实有172.18和172.17地址段的IP地址存在于服务器中

sudo ip addr

我想,明明我都设置了Docker的地址段,怎么还可以出现冲突?,然后我反复的实验,使用Docker-Compose删除后再次重建

sudo docker-compose stop
sudo docker-compose rm
sudo docker-compose up -d

原因:

然后通过查看服务器地址的时候,有时会创建172.17、172.18、172.19、172.20等网段,就是说这个是随机的,当正好创建的是冲突的网段,那就会导致服务器不可连接。

原因是,在Docker-Compose up -d这个命令运行的时候,会为系统创建一个网络

参考地址:https://blog.csdn.net/gezhonglei2007/article/details/51627969

解决方法 

2020-05-12 如果按以下的网络进行处理,还是会有冲突,最终导致服务不可用,而且容易出现无法连接到服务器的情况

在首次运行容器前,先手动创建一个名为mes_net的Docker网络,并且手动的指定它的子网地址为172.20.XXX.XXX网段

docker network create --driver=bridge --subnet=172.20.0.0/16 mes_net

经过调整,在Docker-Compose的yaml文件中指定了网络

version: '3'

services:

  # rabbitmq ***********************************
  rabbitmq:
    image: rabbitmq:management
    restart: always
    ports:
      - 5671:5671
      - 5672:5672
      - 4369:4369
      - 15671:15671
      - 15672:15672
      - 25672:25672
    hostname: rabbit
    environment:
      RABBITMQ_DEFAULT_VHOST: /
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: admin123
    volumes:
      - /root/data/rabbitmq:/var/lib/rabbitmq   
    networks:
      - custom_net    

networks:
  custom_net:
    external:
      name: mes_net       

最终,实现了指定的网络

 

已经恢复了对服务器的访问

参考地址:https://docs.docker.com/compose/compose-file/#network-configuration-reference

参考文章:《https://blog.csdn.net/gezhonglei2007/article/details/51627969

原文地址:https://www.cnblogs.com/weschen/p/12069024.html