Docker默认网段和主机网段冲突解决
1.背景
Docker 是一种广泛使用的容器化平台,它允许开发者在不同环境中轻松地部署和管理应用程序。默认情况下,Docker 会为容器分配一个默认的网段(通常是 172.17.0.0/16),以便容器之间可以相互通信。然而,在某些情况下,Docker 的默认网段可能会与主机或其他网络的网段冲突,这会导致网络连接问题和其他网络相关的错误。
例如,如果主机网络或公司内部网络使用了与 Docker 默认网段相同的 IP 地址范围,那么在主机上运行的 Docker 容器可能无法正确访问外部网络资源,或者可能会出现 IP 地址冲突的问题。这种情况在使用 VPN 连接到公司内部网络时尤其常见。
2.解决方案
例如:

为了解决 Docker 默认网段与主机网段冲突的问题,可以通过以下几种方法来更改 Docker 的默认网段配置:
方法一:更改Docker的默认网段
1.编辑docker Daemon配置文件
在主机上编辑Docker的配置文件‘daemon.json’ ,该文件通常位于 /etc/docker/daemon.json。加入以下代码:
{ "default-address-pools": [ {"base":"172.100.0.0/16","size":24} ] }
其中上面的172.100.0.0/16是自定义的网段地址
2.删除docker0
ip link delete docker0
3.重新启动docker
# 停止docker运行
sudo systemctl stop docker
# 查看docker 状态
sudo systemctl status docker
# 启动docker
sudo systemctl start docker
4.查看docker现有的IP网段

方法二:配置Docker的自定义网络
如果用 docker-compose启动,并且 docker-compose.yml有指定network,在启动过程同样会建立172.17.0.0类似的网络地址,可能还是会与主机冲突,这时候我们使用以下方法修改默认的网段
1. 查看当前有docker建立的网络名称
sudo docker network list

2.停止并删除现有的docker容器
sudo docker stop $(docker ps -aq)
sudo docker rm $(docker ps -aq)
3.删除上面的my_custom_network
sudo docker network remove my_custom_network
4.为上面虚拟网卡重新指定网段
sudo docker network create --driver=bridge --subnet 172.100.0.0/23 app-network
5.重新启动docker
# 停止docker运行
sudo systemctl stop docker
# 查看docker 状态
sudo systemctl status docker
# 启动docker sudo systemctl start docker
6.查看现有的网卡地址

浙公网安备 33010602011771号