日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker Registry 删除镜像并清理

發布時間:2025/3/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker Registry 删除镜像并清理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 修改Docker Registry配置
  • 使用Registry V2 RestfulAPI 刪除鏡像
  • Docker Registry GC回收空間
  • 使用UI管理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值
    curl --cacert /etc/docker/certs.d/192.168.0.34\:5000/ca.crt -H "Accept:application/vnd.docker.distribution.manifest.v2+json" https://192.168.0.34:5000/v2/messer/manifests/1.0

    注意:

    我們配置了證書,所以必須要添加證書 –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

    • 通過上面獲取到的具體返回信息
    {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/octet-stream","size": 4191,"digest": "sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 51363125,"digest": "sha256:75a822cd7888e394c49828b951061402d31745f596b1f502758570f2d0ee79e2"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 20179224,"digest": "sha256:0aefb9dc4a57d3de6a9cfa2e87e4502dfa8ce3876264bb20783b1610f8e44806"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 193,"digest": "sha256:046e44ee6057f1264d00b0c54adcff2f2c44d30a29b50dfef928776f7aa45cc8"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 596,"digest": "sha256:614a7b3525a1442775b9d1b52413024dc750b6a9169fcae8d4ef9cf98bda7f0f"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 1083978,"digest": "sha256:5fe57df972ae5e10f02783cb372841e6feab67a296e2abc16f9a868e4322c33d"}] }

    我們要的就是"digest": "sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056"這個值

    • 通過delete接口刪除鏡像
    curl --cacert /etc/docker/certs.d/192.168.0.34\:5000/ca.crt -X DELETE https://192.168.0.34:5000/v2/messer/manifests/sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056

    返回不是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 删除镜像并清理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。