欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker拉取鏡像部分成功部分失敗的解決方案

 更新時(shí)間:2025年05月28日 10:33:20   作者:mr.Darker  
最近在部署 Zitadel 身份認(rèn)證平臺(tái)的過(guò)程中,遇到一個(gè)看似“隨機(jī)”的問(wèn)題:Docker 有些鏡像可以拉取,有些卻一直超時(shí)失敗,最終通過(guò)配置 Docker 守護(hù)進(jìn)程級(jí)別的代理 才解決,文章記錄整個(gè)問(wèn)題分析和解決過(guò)程,便于自己和大家后期參考,需要的朋友可以參考下

 問(wèn)題背景

部署 Zitadel 時(shí),使用官方提供的 getting-started-with-zitadel.sh 腳本,腳本會(huì)拉取多個(gè) Docker 鏡像,比如:

  • ghcr.io/zitadel/zitadel
  • docker.io/library/caddy
  • netbirdio/** 等

問(wèn)題表現(xiàn)

在執(zhí)行過(guò)程中,有些鏡像可以拉取成功,有些會(huì)報(bào)如下錯(cuò)誤:

Error response from daemon: Get "https://registry-1.docker.io/v2/": 
net/http: request canceled while waiting for connection 
(Client.Timeout exceeded while awaiting headers)

觀(guān)察結(jié)果是:

鏡像是否拉取成功
ghcr.io/zitadel/zitadel? 成功
docker.io/library/caddy? 成功
netbirdio/management / netbirdio/signal? 超時(shí)失敗

同時(shí),我們很早就配置了一些 Docker Hub 鏡像加速器(如阿里云,騰訊云,DaoCloud 等),這也是為什么有些鏡像能順利拉取,有些卻不能的原因之一。

因?yàn)殓R像加速器僅能加速“Docker Hub 官方鏡像”,如 library/nginx 或 docker.io/library/caddy,而像 netbirdio/* 這種非官方項(xiàng)目的鏡像并不在加速器白名單內(nèi),因此仍然會(huì)拉取失敗。

初步排查

網(wǎng)絡(luò)本身沒(méi)有問(wèn)題

  • ping registry-1.docker.io 正常
  • curl https://registry-1.docker.io/v2/ 正常
  • docker login 也沒(méi)有任何異常

但 Docker 拉取仍舊失敗

通過(guò)多次測(cè)試發(fā)現(xiàn),Docker 有些鏡像拉得飛快,有些鏡像卡死或超時(shí),尤其是 docker.io/netbirdio 相關(guān)的鏡像。

這時(shí)開(kāi)始懷疑:

可能和代理有關(guān)

解決思路:配置 Docker 的守護(hù)進(jìn)程代理

平時(shí)我們習(xí)慣配置終端代理,例如:

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

但實(shí)際上:

Docker 守護(hù)進(jìn)程(dockerd)是獨(dú)立運(yùn)行的,它不會(huì)繼承當(dāng)前 shell 的代理環(huán)境變量!

解決方案:配置 Docker 的 systemd 代理

  • 創(chuàng)建代理配置目錄(如不存在):
sudo mkdir -p /etc/systemd/system/docker.service.d
  • 創(chuàng)建代理配置文件:
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
  • 寫(xiě)入以下內(nèi)容(根據(jù)你實(shí)際代理修改):
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.corp"
  • 應(yīng)用配置并重啟 Docker:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 驗(yàn)證代理是否生效:
sudo systemctl show --property=Environment docker

輸出應(yīng)該包含你剛才設(shè)置的代理環(huán)境變量。

最終結(jié)果

重啟 Docker 后再次運(yùn)行部署腳本:

  • 所有鏡像(包括 netbirdio)都能成功拉取
  • 部署流程順利走完

總結(jié)

問(wèn)題結(jié)論
Docker 部分鏡像拉取失敗是由于 Docker 守護(hù)進(jìn)程未配置代理,而不是網(wǎng)絡(luò)本身問(wèn)題
解決方案配置 systemd 層面的 http-proxy.conf,讓 dockerd 使用代理
驗(yàn)證方式systemctl show --property=Environment docker 查看生效狀態(tài)

經(jīng)驗(yàn)教訓(xùn)

  • Docker CLI 和 Docker 守護(hù)進(jìn)程環(huán)境是 兩套東西,網(wǎng)絡(luò)設(shè)置互不影響
  • 如果你使用代理加速訪(fǎng)問(wèn) Docker Hub,務(wù)必同步設(shè)置到 系統(tǒng)服務(wù)級(jí)別
  • 部署復(fù)雜服務(wù)時(shí),像 Zitadel 這類(lèi)一鍵腳本可能集成很多鏡像,盡早配置好代理 可避免不必要的卡頓
  • 配置鏡像加速器雖然有用,但僅限于部分鏡像。像 netbirdioghcr.io 上的鏡像,加速器是無(wú)法覆蓋的,因此守護(hù)進(jìn)程代理是更通用的做法
  • Docker 官方解決文檔

以上就是Docker拉取鏡像部分成功部分失敗的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Docker拉取鏡像部分成功部分失敗的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker連接宿主Redis的方法步驟

    Docker連接宿主Redis的方法步驟

    本文主要介紹了Docker連接宿主Redis的方法步驟,可以輕松地使用Docker容器與宿主機(jī)上的Redis進(jìn)行交互,實(shí)現(xiàn)高效的數(shù)據(jù)存儲(chǔ)和共享,,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • docker部署nginx及nginx.conf文件配置方式

    docker部署nginx及nginx.conf文件配置方式

    這篇文章主要介紹了docker部署nginx及nginx.conf文件配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 你可能不知道的docker命令奇怪巧

    你可能不知道的docker命令奇怪巧

    這篇文章主要介紹了你可能不知道的docker命令的奇怪巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Docker中優(yōu)化Mysql運(yùn)行內(nèi)存的操作

    Docker中優(yōu)化Mysql運(yùn)行內(nèi)存的操作

    這篇文章主要介紹了Docker當(dāng)中優(yōu)化Mysql運(yùn)行內(nèi)存的操作,經(jīng)過(guò)一番操作可以?xún)?yōu)化為只占用100mb內(nèi)存,具體優(yōu)化方法及技巧跟隨小編一起看看吧
    2022-01-01
  • 利用docker搭建php7和nginx運(yùn)行環(huán)境全過(guò)程(官方鏡像)

    利用docker搭建php7和nginx運(yùn)行環(huán)境全過(guò)程(官方鏡像)

    docker提供了在服務(wù)端分布式的部署應(yīng)用,這樣的好處是方便維護(hù)和升級(jí)。下面這篇文章主要給大家介紹了利用docker搭建php7和nginx運(yùn)行環(huán)境的相關(guān)資料,搭建過(guò)程中運(yùn)用的是官方鏡像,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-05-05
  • Docker端口映射的實(shí)現(xiàn)

    Docker端口映射的實(shí)現(xiàn)

    這篇文章主要介紹了Docker端口映射的實(shí)現(xiàn),詳細(xì)的介紹了五種端口的映射方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 如何使用docker對(duì)容器資源進(jìn)行限制

    如何使用docker對(duì)容器資源進(jìn)行限制

    這篇文章主要介紹了如何使用docker對(duì)容器資源進(jìn)行限制,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • docker-registry使用筆記

    docker-registry使用筆記

    在國(guó)內(nèi)docker-hub是肯定用不了的,不解釋:所以最好還是建一個(gè)私有的docker-registry,存儲(chǔ)一些常用的images方便隨時(shí)pull
    2016-09-09
  • docker中運(yùn)行PostgreSQL容器的簡(jiǎn)單步驟

    docker中運(yùn)行PostgreSQL容器的簡(jiǎn)單步驟

    這篇文章主要給大家介紹了關(guān)于docker中運(yùn)行PostgreSQL容器的簡(jiǎn)單步驟,隨著docker的廣泛應(yīng)用,為了提供便利的管理,PostgreSQL數(shù)據(jù)庫(kù)也支持docker的安裝方式,需要的朋友可以參考下
    2023-08-08
  • Docker將鏡像文件發(fā)布到阿里云的詳細(xì)過(guò)程

    Docker將鏡像文件發(fā)布到阿里云的詳細(xì)過(guò)程

    這篇文章主要介紹了Docker將鏡像文件發(fā)布到阿里云的操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論