目錄
📌 問題背景
🧪 排查過程
步驟 1:確認加速器地址是否可訪問
步驟 2:檢查 Docker 是否真的使用了鏡像加速器
步驟 3:重新申請鏡像加速器地址
? 解決方案
💡 總結與經驗教訓
🔚 結語
🔧Docker 報錯“x509: certificate signed by unknown authority”的排查與解決實錄
在使用 Docker 拉取鏡像時,我遇到了如下錯誤:
Error response from daemon: Get "https://registry-1.docker.io/v2/": x509: certificate signed by unknown authority
這類錯誤通常是由于 TLS 證書驗證失敗引起的,但在實際排查中,我發現問題遠比字面上看起來復雜,最終原因竟是鏡像加速器鏈接已過期。這篇文章記錄整個排查與解決過程,希望能幫到遇到類似問題的你。
📌 問題背景
我的 Docker 配置如下(/etc/docker/daemon.json
):
{"log-opts": {"max-size": "5m","max-file": "3"},"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/home/docker","registry-mirrors": ["https://dcf9dea02c7476d35af619.mirror.swr.myhuaweicloud.com"]
}
按理說,配置了華為云的鏡像加速器后,鏡像拉取應當變得更加順暢,但 Docker 卻頻繁報出 TLS 證書校驗錯誤,導致無法拉取如 hello-world
這樣的公共鏡像。
🧪 排查過程
步驟 1:確認加速器地址是否可訪問
我嘗試用 curl
測試鏡像加速器接口:
curl -v https://dcf9dea02c7476d35af619.mirror.swr.myhuaweicloud.com/v2/
返回結果如下:
{"errors":[{"errorCode":"SVCSTG.SWR.4010000","errorMessage":"Authenticate Error"}]}
說明 TLS 沒問題,但訪問被拒絕(401 Unauthorized)。這提示我當前的加速器地址可能需要認證,或者已經失效。
步驟 2:檢查 Docker 是否真的使用了鏡像加速器
使用以下命令檢查配置是否生效:
docker info | grep -i registry
結果表明,Docker fallback 到了官方的 Docker Hub registry-1.docker.io
,而 Docker Hub 的證書因系統 CA 不全而報錯。
步驟 3:重新申請鏡像加速器地址
這時候我懷疑原來的加速器地址已經過期,訪問如下華為云控制臺頁面:
🌐 https://console.huaweicloud.com/swr/?region=cn-north-9#/swr/mirror
重新生成了屬于我當前賬號的 鏡像加速器地址,例如:
https://xxxxx.mirror.swr.myhuaweicloud.com
? 解決方案
我將 daemon.json
文件更新為新的加速器地址:
{"log-opts": {"max-size": "5m","max-file": "3"},"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/home/docker","registry-mirrors": ["https://xxxxx.mirror.swr.myhuaweicloud.com"]
}
然后重啟 Docker:
sudo systemctl daemon-reexec
sudo systemctl restart docker
再次執行:
docker pull hello-world
鏡像拉取成功 ?!
💡 總結與經驗教訓
-
x509
證書報錯不一定是 TLS 問題,可能是 Docker fallback 到 Docker Hub; -
私有鏡像加速器地址是會過期的,使用失效鏈接會被 401 拒絕;
-
應定期訪問鏡像服務平臺,更新加速器地址;
-
docker info
是排查是否使用加速器的關鍵工具; -
配置完鏡像加速器后務必重啟 Docker,并驗證生效。
🔚 結語
如果你也遇到了類似的 TLS 或證書錯誤,不妨從鏡像加速器配置入手。別急著配置 insecure-registries
,很可能只是你用了一個失效的鏈接。
歡迎留言交流,或將此經驗分享到團隊,避免大家踩同樣的坑!