Harbor倉庫啟用同步策略,發(fā)現(xiàn)同步失敗荐健,檢查日志發(fā)現(xiàn)報錯如下:
[ERROR] [/replication/transfer/image/transfer.go:268]: failed to pull the manifest of image kty/report:dev-v0.1.25: http error: code 404, message {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":{"Name":"kty/report","Revision":"sha256:290ad5353a76d4eb0c5969221618150af46534a1101f2a058eb99c7036dbfa7d"}}]}
[ERROR] [/replication/transfer/image/transfer.go:143]: http error: code 404, message {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":{"Name":"kty/report","Revision":"sha256:290ad5353a76d4eba1101f2ac5969221603418150af465058eb99c7036dbfa7d"}}]}
登錄Harbor備份源,檢查發(fā)現(xiàn)琳袄,鏡像大小為零江场;
思考
鏡像大小為零如何上傳?
如何處理大小為零的鏡像窖逗?直接刪除址否?
如何避免推送大小為零的鏡像到harbor倉庫?
如何產(chǎn)生
登錄harbor Web管理頁面刪除鏡像滑负,通過“docker push”命令推送鏡像(與刪除鏡像相同)到harbor項(xiàng)目中報錯“Layer already exists”在张,Web管理頁面生成一個大小為零的鏡像,且頁面操作刪除無效矮慕;
補(bǔ)充:
Harbor倉庫里的鏡像刪除分為兩步驟
軟連接刪除帮匾,通俗講就是Web管理頁面進(jìn)行的刪除,如果誤刪除重新推送鏡像即可恢復(fù)痴鳄;
物理文件刪除瘟斜,登錄服務(wù)器通過鏡像“vmware/registry:2.6.2-photon”進(jìn)行刪除,官方稱之為垃圾回收(GC)痪寻;
文檔:垃圾回收(GC)
故障復(fù)現(xiàn)
解釋 1.0 大小為零如何出現(xiàn)
docker push 10.10.1.43/kry/vmware/photon:1.0
解釋:登錄Harbor Web管理頁面刪除鏡像螺句,物理刪除文件,通過“push”命令推送鏡像相同鏡像橡类,命令行報錯“Layer already exists”蛇尚,Web出現(xiàn)大小為0的1.0;
注意:
push鏡像之前刪除掉“./kry/vmware/photon/_manifests/tags/1.0/”
push鏡像之前刪除掉“./kry/vmware/photon/_manifests”(只有一個鏡像顾画,多個正常鏡像不要刪除)
分別進(jìn)行以上兩步操作取劫,都無法正常上傳鏡像匆笤;
解釋 1.1 大小為零如何出現(xiàn)
docker tag 10.10.1.43/kry/vmware/photon:1.0 10.10.1.43/kry/vmware/photon:1.1
docker push 10.10.1.43/kry/vmware/photon:1.1
解釋:ta鏡像,然后通過“push”命令推送tag 1.1版本谱邪,命令行報錯“Layer already exists”炮捧,Web出現(xiàn)大小為0的1.1;
解釋 2.0 大小正常如何出現(xiàn)
docker tag hello-world:latest 10 10.10.1.43/kry/vmware/photon:2.0
docker push 10.10.1.43/kry/vmware/photon:2.0
解釋:將“hello-world” tag 2.0版本并推送覆蓋惦银;
結(jié)果:
Web刪除相同鏡像咆课,只要刪除物理文件(GC或者手動刪除目錄)在上傳相同鏡像會報錯,并且會產(chǎn)生一個大小不正常的鏡像在harbor倉庫中扯俱;
該鏡像就算重新tag推送也是一樣的书蚪,因?yàn)椤癉IGEST”值一致;
影響
鏡像無法被正常刪除迅栅;刪除執(zhí)行成功善炫,刷新頁面依然存在;
鏡像復(fù)制時會報錯库继,但是大小正常的鏡像能被正常復(fù)制箩艺;
無法正常 pull 鏡像;
問題
1.恢復(fù)鏡像正常(后續(xù)使用)宪萄;
解決:推送源鏡像覆蓋
2.刪除鏡像艺谆;
解決:推送源鏡像或者tag其他鏡像推送覆蓋,Web管理頁面操作刪除拜英,可選刪除物理文件静汤;
解決辦法
1.重啟harbor服務(wù)
cd /usr/local/harbor
docker-compose restart
2.推送鏡像
docker push 10.10.1.43/kry/vmware/photon:1.0
docker push 10.10.1.43/kry/vmware/photon:1.1
注意:
推送源鏡像覆蓋,鏡像恢復(fù)正常居凶;
解決問題1虫给;
3.tag其他鏡像推送
docker pull hello-world:latest
docker tag hello-world:latest 10.10.1.43/kry/vmware/photon:1.0
注意:問題2另一種解決方式;
4.登錄Web頁面
注意:
如果需要鏡像恢復(fù)正常繼續(xù)使用到此結(jié)束侠碧;
5.Web頁面刪除鏡像
登錄Web管理頁面--點(diǎn)擊項(xiàng)目--確認(rèn)勾選鏡像--點(diǎn)擊刪除
注意:tag其他鏡像上傳只為刪除Web頁面顯示大小不正常鏡像抹估,自選是否進(jìn)行物理文件刪除,需要刪除繼續(xù)執(zhí)行以下命令弄兜;
6.預(yù)覽刪除物理文件(自選)
docker run -it --name gc --rm \
--volumes-from registry vmware/registry:2.6.2-photon \
garbage-collect --dry-run /etc/registry/config.yml
注意:不確定以后還需要使用該鏡像時建議保留药蜻,不執(zhí)行物理文件刪除;
7.刪除物理文件(自選)
docker run -it --name gc --rm \
--volumes-from registry vmware/registry:2.6.2-photon \
garbage-collect /etc/registry/config.yml