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.查看现有的网卡地址

 

 
posted @   骑着蚂蚁快跑  阅读(664)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
点击右上角即可分享
微信分享提示