docker pull鏡像報(bào)錯(cuò):‘invalid checksum digest format‘解決
一、問題現(xiàn)象
在進(jìn)行鏡像推送時(shí),發(fā)生報(bào)錯(cuò):
docker push registry.example.com/nginx:xxx ... xxxx:Layers already exists xxxx:Layers already exists xxxx:Layers already exists xxxx:Layers already exists ... invalid checksum digest format
然后,從鏡像倉庫拉取鏡像,也報(bào)錯(cuò):
docker pull registry.example.com/nginx:xxx Error reponse from daemon : error unmarshalling content: invalid character '<' looking for beging of value
二、排查過程
2.1 檢查鏡像
docker load -i nginx:xxx docker images|grep nginx
鏡像可以導(dǎo)入本地,證明鏡像沒有問題。
2.2 檢查鏡像倉庫
docker version: 18.09.0
registry version: 1.1.0
檢查鏡像倉庫的運(yùn)行狀態(tài)
docker ps |grep registry
繞過docker,通過Docker Registry API拉取鏡像 :
curl -X GET http://your-registry/v2/<repository>/manifests/<tag> #將以下內(nèi)容替換為實(shí)際的值: your-registry:你的 Registry 地址(例如,registry.example.com)。 <repository>: 你的鏡像倉庫名稱 <tag>: 你要拉取的鏡像標(biāo)簽
這個(gè)命令將返回鏡像的 manifest(元數(shù)據(jù)),其中包含有關(guān)鏡像的詳細(xì)信息,包括層(layers)和配置。
然后,你可以提取 manifest 中的層信息,并使用 curl 命令拉取每個(gè)層。例如:
# 提取鏡像的層信息 layers=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" http://your-registry/v2/<repository>/manifests/<tag> | jq -r '.layers[].digest') # 拉取每個(gè)層 for layer in $layers; do curl -O -J -L http://your-registry/v2/<repository>/blobs/$layer done
最終可以拉取成功,證明registry服務(wù)正常。
2.3 檢查docker服務(wù)
2.3.1 檢查服務(wù)運(yùn)行狀態(tài)
systemctl status docker
2.3.2 檢查docker日志
journalctl -xe|grep docker

從這里可以看出docker默認(rèn)去連接443端口
2.3.3 檢查docker配置文件
cat /usr/lib/systemd/system/docker.service

可以看到,已經(jīng)配置了registry的安全連接。
三、解決方案
通過多次執(zhí)行docker push可以發(fā)現(xiàn),連接會(huì)重置到443端口上,返回的類似是一個(gè)html的內(nèi)容。
檢查宿主機(jī)的443端口有沒有監(jiān)聽:
netstat -tnulp|grep 443|grep LISTEN tcp 0 0.0.0.0:443 0.0.0.0:* LISTEN 101811/./httpServer
可以看到已經(jīng)有服務(wù)監(jiān)聽了443端口,我們需要把這個(gè)服務(wù)給停掉。
最終鏡像可以正常推拉到鏡像倉庫!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Docker創(chuàng)建FTP服務(wù)器的過程解析
這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡單,而且可以對(duì)宿主機(jī)有一定的隔離,對(duì)Docker創(chuàng)建FTP服務(wù)器的過程感興趣的朋友一起看看吧2022-04-04
MacOS?Docker?安裝的實(shí)現(xiàn)步驟
本文主要介紹了MacOS?Docker?安裝的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Docker consul的容器服務(wù)更新與發(fā)現(xiàn)的問題小結(jié)
這篇文章主要介紹了Docker consul的容器服務(wù)更新與發(fā)現(xiàn),講解了服務(wù)注冊(cè)與發(fā)現(xiàn)的基本概念講解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
docker mysql啟動(dòng)時(shí)執(zhí)行初始化sql
這篇文章主要介紹了docker mysql啟動(dòng)時(shí)執(zhí)行初始化sql問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05
Docker連接mongodb實(shí)現(xiàn)過程及代碼案例
這篇文章主要介紹了Docker連接mongodb實(shí)現(xiàn)過程及代碼案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
docker容器直接退出如何進(jìn)入容器調(diào)試模式
這篇文章主要介紹了docker容器直接退出,如何進(jìn)入容器調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09

