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.查看现有的网卡地址
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略