一、docker默认网卡docker0默认的网段为172.17.0.0/16
某些企业下可能规划私网地址与docker0默认网段冲突,就会导致请求主机发送数据包,流量转发不出去,导致网络访问出现异常。
1、现实情况企业网络一般不会重新规划,只能将docker0分配的默认网段修改。
修改/etc/docker/daemon.json (如果没有此配置文件的话,新建一个即可)
{
"default-address-pools":
[
{"base":"172.100.0.0/16","size":24}
]
}
这里的172.100.0.0/16为你要修改的新的网段,只要不与请求主机网段冲突即可。
配置文件格式一定要对,否则重启docker会出现问题。
这里我分享一个daemon.json的配置文件,防止大家因为格式问题出现错误
https://www.alipan.com/s/Fu45FgzvfGm 提取码: 0c9k
直接将下载的配置文件,通过ftp上传到服务器上即可。
2、删除docker0
ip link delete docker0
3、重新启动docker
service stop docker(systemctl stop docker)
service start docker(systemctl start docker)
4、查看docker现有的ip网段
此时查看,已经修改完。
二、 如果用 docker-compose启动,并且 docker-compose.yml有指定network,在启动过程同样会建立172.17.0.0类似的网络地址,可能还是会与主机冲突,这时候我们使用以下方法修改默认的网段。
1、我们查看当前有docker建立的网络名称
docker network list
从上面可以看出docker建立了3个虚拟网卡,分别为app_app_network、app-default、bridge,其中 app_app_network、app-default是docker-compose启动后建立的,我们只需要修改这2个网络分配的网络地址即可
2、停止并删除现有的docker容器
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
3、删除上面的app_app_network、app-default
docker network remove app_default
docker network remove app_app_network
4、为上面虚拟网卡重新指定网段
docker network create --driver=bridge --subnet 172.150.0.0/24 app_default
docker network create --driver=bridge --subnet 172.160.0.0/24 app_app-network
5、查看现有的网卡地址
ifconfig
从网卡信息上来看,这里的docker网卡也已经改过来了。
希望可以解决朋友们的问题,这个出现的次数还是很多的。