文章目錄
解決 Docker build pip install fail
近期工作之餘將部份時間花在學習 Kubernetes 上,過程中嘗試透過 Dockerfile 建立 pyhon application 的 image 來部署至 Kubernetes 中打算用來做一些實際應用情境的演練,原以為會卡在 Kubernetes 的網路設定上,想不到我太過樂觀,連第一步的 Dockerfile 都 build fail,如果沒有 image 更不用提建立 container 及部署至 Kubernetes
因為 Kubernetes 相關知識尚未上手,非常容易踩雷碰壁,為此我還重建了好幾次 VM 來反覆驗證測試,過程中也遇到好幾次 Dockerfile pip install fail 的狀況,每次都要重新查設定方式,於是就來筆記一下囉
錯誤訊息
訊息內容
Collecting Flask Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f21e335f128>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /simple/flask/
錯誤截圖
問題原因
Docker 未使用正確的 DNS 設定,造成解析錯誤
解決方式
指定 Docker 使用的 DNS
開啟
/etc/default/docker
nano /etc/default/docker
加入 DNS 設定
DOCKER_OPTS="--dns 8.8.8.8"
重啟 Docker
systemctl restart docker
成功 build Dockerfile
- Can’t install pip packages inside a docker container with Ubuntu 有提供其他解決方式,如果上述做法無法解決可以試試其他方法
心得
前幾天跟同事討論到 Dokcer 實際使用上的心得:感覺上 Docker 遇到的坑不少,常常遇到問題,雖然不是解決不了但常常都得靠眾多網友的智慧,官方不一定有明確的建議,另外常常不同版本間的解決方式也不太一樣:可能前一版能用的做法新版就有其他方法。不過我覺得這就是 Docker 相關應用仍在快速發展的表現,雖然功能上還不穩定,但需要的功能可能在短期內就可以被實現,後續表現還是相當值得期待
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。