因阿里雲服務器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/
