IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker Registry 删除镜像并清理 -> 正文阅读

[系统运维]Docker Registry 删除镜像并清理

目录

  1. 修改Docker Registry配置
  2. 使用Registry V2 RestfulAPI 删除镜像
  3. Docker Registry GC回收空间
  4. 使用UI管理Docker Registry

修改Docker Registry配置

配置开启删除功能:config.yml

version: 0.1
log:
  fields:
    service: registry
storage:
    delete:
        enabled: true
    cache:
        blobdescriptor: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
http:
    addr: :5000
    headers:
        X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 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后的效果图

正在上传…重新上传取消?正在上传…重新上传取消

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:04:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:44:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码