Docker無法pull鏡像的常見原因及解決方法匯總
在使用 Docker 時(shí),我們經(jīng)常會(huì)通過 docker pull 命令獲取鏡像,但有時(shí)會(huì)遇到 pull 不下來的問題。本文總結(jié)了常見的失敗原因及對(duì)應(yīng)的解決方法,適用于初學(xué)者和開發(fā)者查錯(cuò)參考。
一、常見錯(cuò)誤現(xiàn)象
1.net/http: request canceled while waiting for connection
2.Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
3.connection refused
4.unauthorized: authentication required
5.denied: requested access to the resource is denied
6.Error response from daemon: manifest for xxx not found
二、解決方法匯總
1. 網(wǎng)絡(luò)連接問題
最常見的原因是網(wǎng)絡(luò)連接 Docker Hub 不穩(wěn)定或被墻:
解決方案:
檢查 DNS 設(shè)置,推薦使用阿里 DNS(223.5.5.5)或 Google DNS(8.8.8.8):
編輯 /etc/resolv.conf,添加:
nameserver 8.8.8.8 nameserver 223.5.5.5
使用國內(nèi)鏡像源,例如:
編輯 /etc/docker/daemon.json:
{ "registry-mirrors": ["https://registry.docker-cn.com", "https://hub-mirror.c.163.com"] }
重啟 Docker:
sudo systemctl daemon-reexec sudo systemctl restart docker
2. 鏡像名稱錯(cuò)誤或不存在
比如打錯(cuò)鏡像名、版本號(hào)錯(cuò)誤等。
解決方案:
確認(rèn)鏡像名稱拼寫正確,例如:
docker pull nginx:latest
建議先通過 Docker Hub 網(wǎng)站或命令查找可用 tag:
docker search nginx
3. 權(quán)限問題(unauthorized)
有些鏡像倉庫(如私有倉庫)需要登錄授權(quán)。
解決方案:
使用 docker login 登錄:
docker login
然后重新 pull。
4. 鏡像 tag 不存在(manifest not found)
比如使用了錯(cuò)誤的 tag。
解決方案:
先查看支持的 tag 列表:
docker pull image-name
或直接訪問:https://hub.docker.com/
5. 代理問題(公司網(wǎng)絡(luò))
某些公司網(wǎng)絡(luò)需要設(shè)置代理才能正常連接 Docker Hub。
解決方案:
配置 Docker 的代理:
編輯 /etc/systemd/system/docker.service.d/http-proxy.conf:
[Service] Environment="HTTP_PROXY=http://your-proxy.com:port/" Environment="HTTPS_PROXY=http://your-proxy.com:port/"
重啟 Docker:
sudo systemctl daemon-reexec sudo systemctl restart docker
6、無法在線 pull 鏡像?試試離線下載鏡像并導(dǎo)入
當(dāng)服務(wù)器無法訪問外網(wǎng)、Docker Hub 被墻或出于內(nèi)網(wǎng)環(huán)境部署需求,可以選擇離線下載 Docker 鏡像,然后導(dǎo)入到目標(biāo)服務(wù)器中使用。
離線導(dǎo)入鏡像的完整流程如下:
Step 1:在可聯(lián)網(wǎng)的機(jī)器上下載鏡像
docker pull nginx:1.25
下載完成后,將鏡像保存為 tar 文件:
docker save -o nginx_1.25.tar nginx:1.25
Step 2:將 tar 包復(fù)制到目標(biāo)服務(wù)器
可以使用 scp、U 盤、內(nèi)網(wǎng)傳輸?shù)确绞綄?nginx_1.25.tar 拷貝至目標(biāo)服務(wù)器。
scp nginx_1.25.tar user@192.168.x.x:/home/user/
Step 3:在目標(biāo)服務(wù)器上導(dǎo)入鏡像
docker load -i nginx_1.25.tar
驗(yàn)證鏡像是否導(dǎo)入成功:
docker images
輸出結(jié)果應(yīng)包含 nginx:1.25
提示:
離線導(dǎo)入支持多個(gè)鏡像合并保存,例如:
docker save -o images.tar nginx:1.25 redis:7.2
同理,導(dǎo)入后也可用 docker tag 重命名或上傳至私有倉庫。
三、建議
遇到 pull 問題時(shí),先執(zhí)行 docker info 查看當(dāng)前配置。
多用官方鏡像,避免使用 tag 為 latest 造成不可控更新。
如果長(zhǎng)期開發(fā),建議搭建本地 Harbor 倉庫,提高效率。
到此這篇關(guān)于Docker無法pull鏡像的常見原因及解決方法匯總的文章就介紹到這了,更多相關(guān)Docker解決無法pull鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker compose部署cassandra集群的操作代碼
這篇文章主要介紹了docker compose部署cassandra集群的操作代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03docker入門教程(利用docker部署web應(yīng)用)
docker是一個(gè)用來裝應(yīng)用的容器,就像杯子可以裝水,筆筒可以放筆,書包可以放書,可以把hello word放在docker中,可以把網(wǎng)站放入docker中,可以把任何想得到的程序放在docker中,這篇文章主要介紹了docker入門(利用docker部署web應(yīng)用),需要的朋友可以參考下2023-02-02docker compose安裝es+kibana 8.12.2的詳細(xì)過程
因云平臺(tái)需要改造,es7升級(jí)為es8,所以記錄一下,es8需要開啟ssl認(rèn)證,需要配置證書,全本帶你用docker安裝,便于后面es8的學(xué)習(xí),這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧2024-05-05Docker部署項(xiàng)目完全使用指南(小結(jié))
本文主要介紹了Docker部署項(xiàng)目完全使用指南,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03