天天看點

Docker Registry V2 推送鏡像、拉取鏡像、搜尋鏡像、删除鏡像和垃圾回收官方文檔Registry操作參考文檔

機緣巧合搞了台ARM伺服器(華為鲲鵬處理器)于是想試水用用,首先碰到了想搭建一個私有倉庫的問題,剛好比較容易的倉庫Nexus3、Harbor沒有ARM架構的,隻有回到原點docker自己的Registry,但其沒有一個前段的界面,當然有些第三方的,暫不談論。那麼想要操作管理鏡像就是一個很需要解決的問題,看了官方的原文,但有的東西還是要自己實驗下才行。不過這方面已經有人總結了,在此就轉貼下,個别的地方有些不痛不癢的修改。

原文連結:https://blog.csdn.net/nklinsirui/article/details/80705306

[TOC]

Docker Registry HTTP API v2

Garbage collection

格式

示例

Registry V2 不支援通過docker search 去搜尋鏡像,需要通過Registry V2的REST API去查詢。

示例輸出例子:

删除registry比較複雜,需要先查到指定标簽的鏡像的digest (sha256校驗和),再根據這個digest來删除。下面以删除192.168.37.100:5000/busybox/:0.0.1 鏡像為例。

1) 先執行以下指令找到該鏡像的digest:

Digest輸出例子:

2) 執行以下指令,根據digest删除鏡像:

這裡的删除鏡像隻是删除了一些中繼資料,需要執行下面的垃圾回收才能真正地從硬碟上删除鏡像資料。因為預設Docker private registry不允許删除鏡像,如果遇到“405 Unsupported” 錯誤,需要在運作registry容器時設定REGISTRY_STORAGE_DELETE_ENABLED環境變量或參數為true。

docker-compose.yaml 例子:

docker run 例子:

3)垃圾回收

進入registry容器,執行garbage-collect 指令執行垃圾回收。

《Docker容器與容器雲》 3.5 Docker鏡像管理,3.6.1 Docker鏡像中繼資料管理

https://stackoverflow.com/questions/31251356/how-to-get-a-list-of-images-on-docker-registry-v2

https://stackoverflow.com/questions/37033055/how-can-i-use-the-docker-registry-api-v2-to-delete-an-image-from-a-private-regis

https://stackoverflow.com/questions/25436742/how-to-delete-images-from-a-private-docker-registry

https://github.com/docker/distribution/issues/1326

https://github.com/docker/distribution/issues/989