Docker拉取鏡像超時(shí)的原因分析與解決方法
前言
最近在使用 Docker 拉取鏡像時(shí),遇到了一連串令人抓狂的超時(shí)報(bào)錯(cuò):
ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection
這問(wèn)題聽(tīng)起來(lái)熟悉嗎?網(wǎng)上一搜,大家都建議你配置國(guó)內(nèi)鏡像源。但我試了好幾個(gè),照做之后依然拉!不!動(dòng)!,仿佛鏡像倉(cāng)庫(kù)從地球被搬到了火星。
于是,我花了一整天翻資料、試配置,最終完美解決。今天就來(lái)詳細(xì)分享這趟“排雷”過(guò)程,以及一個(gè)隱藏的關(guān)鍵點(diǎn),希望能幫你徹底解決 Docker 拉取鏡像超時(shí)的問(wèn)題。
一、問(wèn)題現(xiàn)象
在執(zhí)行如下命令拉取鏡像時(shí):
docker pull nginx
Docker 會(huì)嘗試從默認(rèn)倉(cāng)庫(kù) https://registry-1.docker.io/v2/ 拉取,但出現(xiàn)了下面這個(gè)報(bào)錯(cuò):
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection
這個(gè)錯(cuò)誤大概率是因?yàn)榫W(wǎng)絡(luò)問(wèn)題,連接 Docker 官方倉(cāng)庫(kù)超時(shí)。國(guó)內(nèi)訪問(wèn) Docker Hub 一直不算穩(wěn)定,加速器成了剛需。
二、常規(guī)解決方案:配置國(guó)內(nèi)鏡像源
大部分教程都建議配置 /etc/docker/daemon.json 文件(沒(méi)有就新建一個(gè)),內(nèi)容如下:
{ "registry-mirrors": [ "https://docker.1panel.live", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ] }
配置完之后重啟 Docker:
systemctl daemon-reexec
systemctl restart docker
理論上應(yīng)該可以了……結(jié)果還是超時(shí)!
三、深入排查:這些隱藏配置你加了嗎
在我反復(fù)嘗試多種鏡像源無(wú)果之后,我開(kāi)始懷疑:
是不是僅僅配置 registry-mirrors 不夠?
答案是:是的!
我最終使用了下面這份更全面的配置,才真正解決問(wèn)題:
{ "registry-mirrors": [ "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.cc", "https://do.nark.eu.org", "https://dc.j8.work", "https://gst6rzl9.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "http://mirrors.ustc.edu.cn/", "https://mirrors.tuna.tsinghua.edu.cn/", "http://mirrors.sohu.com/" ], "insecure-registries": [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug": true, "experimental": false }
幾個(gè)關(guān)鍵點(diǎn)必須解釋清楚:
1.鏡像源要夠多
不是所有鏡像都適用于你當(dāng)前的網(wǎng)絡(luò)環(huán)境,多加幾個(gè)備用,不僅速度快,還能防止單點(diǎn)故障。
2.添加 insecure-registries
有些鏡像源不支持 HTTPS,或你所在的網(wǎng)絡(luò)環(huán)境中存在中間人干擾,Docker 默認(rèn)不會(huì)信任這些源。通過(guò)加上 "insecure-registries",你明確告訴 Docker:“我信它!”
3.debug 和 experimental 參數(shù)
這兩個(gè)不是解決問(wèn)題的核心,但建議開(kāi)啟 debug: true,可以打印更多日志方便后續(xù)排查。
四、完整操作流程總結(jié)
編輯或新建 /etc/docker/daemon.json:
sudo nano /etc/docker/daemon.json
粘貼上面的配置內(nèi)容。
重啟 Docker:
sudo systemctl daemon-reexec sudo systemctl restart docker
驗(yàn)證是否生效:
docker info
在輸出中找到 "Registry Mirrors" 字段,如果配置的鏡像源都顯示出來(lái)了,就說(shuō)明生效了。
五、額外建議
科學(xué)上網(wǎng)優(yōu)先:如果你有穩(wěn)定的代理,其實(shí)使用官方鏡像源也沒(méi)問(wèn)題。
測(cè)試鏡像加速效果:可以用 curl 命令去訪問(wèn)鏡像源,看響應(yīng)速度。
定期更新鏡像源列表:有些鏡像站可能過(guò)期、下線,保持新鮮有助于穩(wěn)定。
六、寫(xiě)在最后
Docker 鏡像拉取超時(shí)這個(gè)坑,真的是國(guó)內(nèi)開(kāi)發(fā)者的“入門(mén)之痛”。
到此這篇關(guān)于Docker拉取鏡像超時(shí)的原因分析與解決方法的文章就介紹到這了,更多相關(guān)Docker拉取鏡像超時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker和Nginx部署Web服務(wù)的操作指南
本文給大家介紹了Docker和Nginx部署Web服務(wù)的完美指南,Docker是一種容器化技術(shù),它可以將應(yīng)用程序及其依賴(lài)項(xiàng)打包到一個(gè)獨(dú)立的、可移植的容器中,而Nginx則是一款高性能的Web服務(wù)器和反向代理服務(wù)器,感興趣的朋友可以參考下2024-01-01Docker無(wú)法stop或者rm指定容器問(wèn)題解決方案
這篇文章主要介紹了Docker無(wú)法stop或者rm指定容器問(wèn)題解決方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06Docker快速搭建Kafka集群及測(cè)試的技術(shù)指南
Kafka是一款高吞吐量的分布式消息系統(tǒng),配合Zookeeper可實(shí)現(xiàn)集群化部署,本文將通過(guò)Docker容器技術(shù)快速搭建3節(jié)點(diǎn)Kafka集群并完成消息生產(chǎn)消費(fèi)測(cè)試,感興趣的可以了解下2025-04-04Docker 使用國(guó)內(nèi)鏡像倉(cāng)庫(kù)的方法
這篇文章主要介紹了Docker 使用國(guó)內(nèi)鏡像倉(cāng)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01關(guān)于ROS2安裝與docker環(huán)境使用
大家好,本篇文章主要講的是關(guān)于ROS2安裝與docker環(huán)境使用,感興趣的同學(xué)趕快來(lái)看看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12