背景
根據項目的需要,虛擬化一個Ubuntu OS 來玩 docker,虛擬機選擇的是WMWare (VMware-player-14.0.0-6661328); Ubuntu的鏡像來自於官網(ubuntu-16.04.3-desktop-amd64.iso)。
期初做這個WM的時候是在Win7 Professonal 64 完成的,做完之后在Windows 2012 server 上面運行,VM一切正常(包括使用docker pull 鏡像)。
后來,又在一台Win10 home 版的機器上部署虛擬機,發現部署完成之后docker 不能 pull 鏡像,報錯如下:
$ docker pull mysql Using default tag: latest Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解決方法
網上搜索了一大堆,解決問題的方案都是分為兩派:
1. “添加國內鏡像倉庫”,例如ali-cloud, dao-cloud, 等等。。。
2. 查看防火牆,關閉防火牆。
經過分析,以及不斷地嘗試,首先排除防火牆的問題。此外,“添加國內鏡像的方法”也只是一個替代方案,沒有從根本上解決問題。 整理思路之后,嘗試着在WMWare的網絡設置上試試看:
查看WmWare的網絡設置,默認情況下是NAT,如圖所示:
在NAT的模式下,嘗試pull一個mysql的鏡像,報錯如下:
試着修改WMWare網絡的網絡設置為“bridge”:
再次運行pull命令, where amazing happened!!!
總結
其實,我們只是將WMWare的網絡設置從 “NAT” 修改成為 “Bridge”, 然后就OK了。具體的原理和原因我也無從查證,希望有大神能有指點指點。
雖然折騰的有點晚了,不過還是解決了問題 :)
感謝大家的觀看,如果知道原因的也請留言,一起討論!! Thanks