在本地可以順利構(gòu)建鏡像,在測試服務(wù)器上卻報(bào)錯(cuò)了喜喂。截圖如下:
在圖中可以發(fā)現(xiàn)照弥,在Dockerfile執(zhí)行到pip安裝下載依賴時(shí)就會(huì)卡住。
并不是Dockerfile的編譯錯(cuò)誤这揣,而是什么“Temporary failure in name resolution”錯(cuò)誤给赞。
1.假設(shè)服務(wù)器網(wǎng)絡(luò)問題
為了不影響服務(wù)器現(xiàn)有環(huán)境片迅,我新建一個(gè)虛擬環(huán)境皆辽,執(zhí)行pip相關(guān)依賴的下載。
發(fā)現(xiàn)測試服務(wù)器網(wǎng)絡(luò)是通的。沒有問題遗嗽。
2.由于我使用了pip阿里云鏡像源,假設(shè)無法解析阿里云鏡像源域名征字。
經(jīng)過測試發(fā)現(xiàn)匙姜,不僅網(wǎng)絡(luò)是通的氮昧,而且延遲相當(dāng)?shù)汀?/p>
3.容器內(nèi)部網(wǎng)絡(luò)問題
在不斷縮小范圍后,開始排查容器的網(wǎng)絡(luò)問題咪辱。
經(jīng)過一番查詢椎组,得到如下結(jié)果:
docker build鏡像時(shí)寸癌,默認(rèn)使用網(wǎng)橋(bridge)模式蒸苇,容器時(shí)虛擬環(huán)境,沒有自己的網(wǎng)卡溪烤,所以無法連接網(wǎng)絡(luò)氛什。
好在docker在構(gòu)建(build)或者運(yùn)行(run)鏡像時(shí)都提供了選擇網(wǎng)絡(luò)的參數(shù),我們可以使用宿主機(jī)的網(wǎng)絡(luò)捺檬,也就是這臺(tái)測試服務(wù)器堡纬。
經(jīng)過查詢docker的官方文檔,找了docker build時(shí)設(shè)置網(wǎng)絡(luò)的參數(shù)--network
解決問題
在構(gòu)建鏡像時(shí)蒿秦,在命令最后帶上--network host即可烤镐。
docker build -t <鏡像名> . --network host
到此為止,解決問題棍鳖。
參考資料:
docker build以及docker run時(shí)使用host網(wǎng)絡(luò)的方法
docker 官方文檔