原因
很多时候因为docker的网段是现有宿主机的网段冲突,导致网络无法访问.此时修改docker的网段成本是最低的.
场景举例: 我们经常遇到容器内无法访问外部的172.17网段的设备以及服务器(就是因为冲突的问题
方案1
如果仅仅是宿主机访问出现问题,可以尝试增加一条路由,核心思路就是想访问此设备的路由指向新的路由.
sh
$ route add -host 172.17.147.201/32 gw 10.51.195.1 #宿主机访问172.17.147.201的所有路由走网关10.51.195.1(宿主机所在网段的网关
方案2
步骤1 :查看docker的网络
sh
$ ifconfig #docker0网段是多少
$ docker network ls
$ docker network list
步骤2:停掉docker
sh
$ systemctl stop docker
步骤3: 修改配置
sh
$ vi /etc/docker/daemon.json
# 添加以下内容
{
"default-address-pools":[
{"base":"172.21.0.0/16","size":24},
{"base":"172.22.0.0/16","size":24},
{"base":"172.23.0.0/16","size":24},
{"base":"172.25.0.0/16","size":24},
{"base":"172.26.0.0/16","size":24},
{"base":"172.27.0.0/16","size":24},
{"base":"172.29.0.0/16","size":24},
{"base":"172.30.0.0/16","size":24}
],
"bip":"172.20.0.1/24"
}
步骤4:启动docker
sh
$ systemctl daemon-reload
$ systemctl restart docker
$ sudo systemctl start docker.service