docker-compose启动服务网段与内网冲突

875 阅读1分钟

引言

通过docker-compose启动服务,没有指定网段,docker启动时会在宿主机上创建一个默认的服务网段,创建的192.168网段刚好与公司内网的192.168网段冲突,导致该服务器内网无法登陆。

docker网段冲突.png

networks概述

docker compose在默认情况下会为应用创建一个网络,服务的每个容器都会加入该网络中。默认网络会对所有处于该网络的容器服务生效,容器服务之间可以通过service名称相互访问。

方法

创建与内网不冲突的docker子网段

docker network create --driver=bridge --subnet=172.21.0.1/16 docker_net

docker run 运行时指定docker网段

docker run -it --name <容器名> ---network docker_net  <镜像名>

docker-compose 运行时通过networks指定

version: '3'
networks:
   mynet:
     external:
       name: docker_net  

services:
    xxxxxx:
        networks:
            - mynet

修改docker默认网段

  • 停止docker服务
systemctl stop docker
  • 删除默认网段
ip link del docker0 down
  • 新增默认网段,vim /etc/docker/daemon.json,添加以下内容
"bip":"172.21.0.1/16"
  • 重启docker服务
systemctl restart docker
or
service docker restart

总结

进行docker-compose文件的编写时,尽量指定服务之间的交互网段,如没有自定义网段,可使用默认网段。以免造成网络冲突。