引言
通过docker-compose启动服务,没有指定网段,docker启动时会在宿主机上创建一个默认的服务网段,创建的192.168网段刚好与公司内网的192.168网段冲突,导致该服务器内网无法登陆。
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文件的编写时,尽量指定服务之间的交互网段,如没有自定义网段,可使用默认网段。以免造成网络冲突。