因阿里云服务器VPC默认占用了172.16.0.0/16 网段,与Docker里的网段相同,导致Docker里无法连接VPC服务器。后来找到的解决方案是修改Docker的默认网段。
由于Docker默认网段是172.16.0.0/16 ,我们可以修改为其他网段。
如何修改
Docker for mac
如果本地环境是 Docker for mac,依次打开 Preferences -> Daemon -> Advanced ,增加配置 "bip" : "172.16.10.1/24"
,从而避免网段冲突的问题。
docker-machine
如果使用的docker-machine,请使用docker-machine ssh
进入虚拟机,编辑文件/etc/docker/daemon.json
,增加 {"bip" : "172.16.10.1/24"}
,然后退出虚拟机,重启docker-machine
即可成功修改网段。
修改成功后,在docker里使用ping命令,就可以ping通VPC网段了。通过ifconfig也可以发现默认的网段不再是172.16.x.x 了:
~$ ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:48:02:F1:60
inet addr:172.16.10.1 Bcast:172.16.10.255 Mask:255.255.255.0
inet6 addr: fe80::42:48ff:fe02:f160/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:578 (578.0 B)
其它
如果发现docker内访问某个地址超时,可以使用ping命令,如果Ping不通,使用ifconfig看看是不是有网桥占用了网段。使用ifconfig xxx down
可以停用冲突的网卡:
ifconfig br-599560de6ff8 down
彻底的解决办法就是删除掉不用的网桥,参考:http://hujao.com/2018/07/27/docker-network/