為 Docker 配置鏡像加速器(解決 TLS handshake timeout 問題)


問題

當我們下載並安裝完 Docker Desktop for Windows,運行 Docker 快速入門(一)- 情況介紹和安裝 中的示例命令 docker run hello-world 時,可能會遇到如下的問題:

PS C:\Users\Rimland> docker --version
Docker version 19.03.8, build afacb8b

PS C:\Users\Rimland> docker run hello-world
Unable to find image 'hello-world:latest' locally
C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: net/http: TLS handshake timeout.
See 'C:\Program Files\Docker\Docker\resources\bin\docker.exe run --help'.

docker-registry-timeout

原因

這是因為默認情況下 Docker 被配置為在 Docker Hub 上尋找鏡像,Docker Hub 是一個任何人都可以使用的公共注冊表,服務器遠在海外,導致請求超時。

解決方案

配置鏡像加速器,以提升獲取 Docker 官方鏡像的速度。

鏡像加速器有很多,我們使用阿里雲的加速器來設置,操作步驟如下:

  1. 打開阿里雲 容器鏡像服務 ACR
  2. 點擊“管理控制台”,登錄阿里雲賬號(如果沒有賬號,需先注冊一個)。
  3. 左側菜單導航到“鏡像中心” --> "鏡像加速器",可以看到加速器地址及操作文檔(有針對 Ubuntu、CentOS、Mac、Windows 各系統的操作文檔)。

針對安裝了 Docker Desktop for Windows 的用戶,可以參考以下配置步驟:

在系統右下角 Docker 托盤圖標右鍵彈出菜單選擇 Settings,打開配置窗口后左側導航菜單選擇 Docker Engine。編輯窗口內的JSON串,填寫下方加速器地址:

{
  "registry-mirrors": ["https://mkts104l.mirror.aliyuncs.com"]
}

如圖:

docker-registry-mirrors

編輯完成后點擊 Apply & Restart 按鈕,等待 Docker 重啟並應用配置的鏡像加速器。

再次運行命令 docker run hello-world 檢查,已經運行正常了:

docker-registry-ok


作者 : 技術譯民
出品 : 技術譯站


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM