通常情况下docker服务安装后,docker默认使用的网络IP段是172.17.0.1/24,这样容易对实际环境造成冲突。为了解决这个问题,我们介绍一个可行的解决办法
注: 本文基于centos7以上,docker版本在==1.12.x,1.13.x==测试有效
实施步骤
-
检查docker版本
docker -v
在其他docker版本下需自行测试。
-
停止docker服务
systemctl stop docker
-
修改默认配置
cat /etc/docker/daemon.json
添加要修改的网段到/etc/docker/daemon.json
{
“bip”: “172.20.0.1/16”
}
-
重启docker服务
systemctl restart docker
原理分析
启动 Docker的时候,用 --network 参数,可以指定网络类型
docker run -itd --name centos7 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
docker在用户不指定的情况下,通常会创建三种常用的网络,bridge、host、none
- bridge:桥接网络
默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,就导致重启后,Docker的IP地址就变了 - none:无指定网络
使用 --network=none ,docker 容器就不会分配局域网的IP,这种适合不需要分配IP的情况。 - host: 主机网络
使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。