Docker Registry 删除镜像并清理
目錄
修改Docker Registry配置
配置開啟刪除功能:config.yml
version: 0.1 log:fields:service: registry storage:delete:enabled: truecache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registry http:addr: :5000headers:X-Content-Type-Options: [nosniff] health:storagedriver:enabled: trueinterval: 10sthreshold: 3主要在storage下增加delete開啟狀態 enabled:true
具體配置參考官方配置詳情:distribution/configuration.md at main · distribution/distribution · GitHub
使用Registry V2 RestfulAPI 刪除鏡像
鏡像刪除之前需要獲取鏡像的digest值
- 獲取鏡像digest值
注意:
我們配置了證書,所以必須要添加證書 –cacert使用crt證書
在獲取鏡像digest值時必須要指定Header “Accept:application/vnd.docker.distribution.manifest.v2+json” 否則無法獲取
RESTful API格式:
/v2/<鏡像名稱>/manifests/<tag>具體Docker registry V2 RESTful API查看:HTTP API V2 | Docker Documentation
- 通過上面獲取到的具體返回信息
我們要的就是"digest": "sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056"這個值
- 通過delete接口刪除鏡像
返回不是404 就是刪除了
具體Docker registry V2 RESTful API查看:HTTP API V2 | Docker Documentation
Docker Registry GC回收空間
但是實際上并沒有刪除,只是刪除了 Registry 的索引。實際文件并沒有刪除。
最后還需要執行鏡像的垃圾回收:
registry garbage-collect /etc/docker/registry/config.yml上面需要進入到registry容器里面去執行,/etc/docker/registry/config.yml為配置文件路徑
gc完后會看到被gc的信息例如:
root@83d6f5acc9f5:/# /bin/registry garbage-collect /etc/docker/registry/config.yml INFO[0013] Deleting blob: /docker/registry/v2/blobs/sha256/c0/c0c9ad6136b5e7b142c48c7167eede3d15af54c538f7f3177c50693006cca242 go.version=go1.6.2 instance.id=73c88c92-c196-413e-9cdf-413760de2a62 INFO[0013] Deleting blob: /docker/registry/v2/blobs/sha256/0c/0c1f3512513001c7e37c0dff11064a5c76ad9098507ee74189d6a810742173d7 go.version=go1.6.2 instance.id=73c88c92-c196-413e-9cdf-413760de2a62如果沒有任何輸出證明沒有回收到任何東西。
使用UI管理Docker Registry
上面是通過Docker registry V2 RESTful API的方式刪除,也可以通過UI工具刪除,目前Docker registry UI工具也比較多這里介紹兩個, docker-registry-frontend和hyper/docker-registry-web。
docker-registry-frontend
我們使用的是 docker-registry-frontend但是他的功能比較弱沒有刪除的操作,只能瀏覽,雖然他的說明里面有說明添加了刪除功能但是發布的版本中并沒有合并刪除功能的代碼:
官方hub信息:Docker Hub
正在上傳…重新上傳取消
這個MODE_BROWSE_ONLY=false這個配置是完全沒有效果的,今天可以查看docker-registry-frontend的github issue:only support browsing repositories? · Issue #106 · kwk/docker-registry-frontend · GitHub
hyper/docker-registry-web
這個UI雖然不是很好看,但是有刪除功能
官方hub信息:Docker Hub
創建步驟根據官方hub上面的說明信息一步一步做就ok了,但是這個東西做的不太好速度有點慢。
界面預覽:
正在上傳…重新上傳取消?正在上傳…重新上傳取消?正在上傳…重新上傳取消?正在上傳…重新上傳取消
不管是通過RESTful API還是UI刪除鏡像,都需要去再registry里去gc一下才能真正釋放空間,如下時候gc后的效果圖
正在上傳…重新上傳取消?正在上傳…重新上傳取消
總結
以上是生活随笔為你收集整理的Docker Registry 删除镜像并清理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为交换机如何通过tftp服务器上传下载
- 下一篇: Pytorch torchvision完