Docker Registry之删除镜像、垃圾回收
Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据。在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据。本文对这一特性进行了体验,具体步骤如下。
1、部署镜像仓库
(1)启动仓库容器
dockerrun -d -v /home/config.yml:/etc/docker/registry/config.yml -p 4000:5000 --nametest_registryregistry:2.4.1
这里需要说明一点,在启动仓库时,需在配置文件中的storage配置中增加delete=true配置项,允许删除镜像,本次试验采用如下配置文件:
root@SZX1000041895:/# cat /home/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
(2)上传镜像
root@SZX1000041894:/home# docker tag centos 10.229.43.217:4000/xcb/centos
root@SZX1000041894:/home# docker push 10.229.43.217:4000/xcb/centos
Thepushrefersto a repository [10.229.43.217:4000/xcb/centos]
5f70bf18a086: Pushed
4012bfb3d628: Pushed
latest: digest: sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6 size: 1331
(3)查看数据进行仓库容器中,通过du命令查看大小,可以看到当前仓库数据大小为61M。
root@SZX1000041895:~# docker exec -it test_registry /bin/bash
root@e6d36b0d7e86:/# du -sch /var/lib/registry
61M .
61M total
2、删除镜像
删除镜像对应的API如下:
DELETE /v2/<name>/manifests/<reference>
name:镜像名称
reference: 镜像对应sha256值
(1)发送请求,删除刚才上传的镜像
root@SZX1000041894:/home# curl -I -X DELETE http://10.229.43.217:4000/v2/xcb/centos/manifests/sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6
HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Wed, 06 Jul 2016 09:24:15 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8
(2)查看数据大小
root@e6d36b0d7e86:/var/lib/registry# du -sch
61M .
61M total
可以看到数据大小没有变化(只删除了元数据)
3、垃圾回收
(1)进行容器执行垃圾回收命令
命令:registry garbage-collect config.yml
root@e6d36b0d7e86:/var/lib/registry# registry garbage-collect /etc/docker/registry/config.yml
INFO[0000] Deletingblob: /docker/registry/v2/blobs/sha256/96/9687900012707ea43dea8f07a441893903dd642d60668d093c4d4d2c5bedd9eb go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58
INFO[0000] Deletingblob: /docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58
INFO[0000] Deletingblob: /docker/registry/v2/blobs/sha256/c3/c3bf6062f354b9af9db4481f24f488da418727673ea76c5162b864e1eea29a4e go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58
INFO[0000] Deletingblob: /docker/registry/v2/blobs/sha256/5b/5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6 go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58
(2)查看数据大小
root@e6d36b0d7e86:/var/lib/registry# du -sch
108K .
108K total
Docker Registry之删除镜像、垃圾回收的更多相关文章
- docker registry 删除镜像 垃圾回收
操作步骤 通过环境变量修改默认配置,允许删除 获取image的sha值 进入registry容器中,执行垃圾回收 删除残留目录 #环境变量 REGISTRY_STORAGE_DELETE_ENABLE ...
- Docker registry 私有仓库镜像查询、删除、上传、下载 shell
#Docker官方私有仓库registry #官方只提供了API接口,不方便使用,就写了个shell #docker-registry安装配置http://www.cnblogs.com/elvi/p ...
- Docker——Registry搭建私有镜像仓库
前言 在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库 ...
- 【转载】Docker registry仓库历史镜像批量清理
前言 在jenkins CI/CD流水线中以自动打包并push镜像的方式运行了一段时间之后, docker registry中堆积的历史镜像数量极多,磁盘空间告急,为此,有必要定期做镜像的清理,并释放 ...
- docker 私有仓库 删除镜像
1.查找官方删除法 https://github.com/burnettk/delete-docker-registry-image 2.民用删除法 https://segmentfault.com/ ...
- [Docker]如何批量删除镜像
docker 使用一段时间之后,可能堆积很多用不着的,或者编译错误的镜像,一个一个删除就很麻烦,需要一个批量删除的方法,如下: docker rmi $(docker images | grep &q ...
- docker registry 镜像删除
registry:2.5.0版本的镜像,将镜像默认存放在了/var/lib/registry 目录下 /var/lib/registry/docker/registry/v2/repositories ...
- Docker——Registry 通过Shell管理私有仓库镜像
使用方法: 复制代码保存为 image_registry.sh sh image_registry.sh -h #查看帮助 HUB=10.0.29.104:5000 改为自己的地址 #!/bin ...
- 搭建docker镜像仓库(一):使用registry搭建本地镜像仓库
目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3. ...
- docker删除镜像和删除容器
删除容器:docker rm ID 删除镜像:docker rmi ID
随机推荐
- Java异常详解(全文干货)
介绍 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常 ...
- MJUCTF—WP
1.猫娘 点开发现有两个文件, 一个加密压缩包, 一个word文档 点开word发现是兽音加密, 点开在线网站进行解密 # 得到一段文本, 先进行分割 小小年内则伏勤, 阵阵寒风刺骨寒. 是处寂寞无人 ...
- 微软azure devops 如何搭建代理池服务器
如果你的pipeline使用微软azure的服务器进行编译失败,提示你不能进行并行任务的话,可以自己拿一台服务器来搭建编译服务器. 目标是让你的 Organization settings -> ...
- 每天5分钟复习OpenStack(十五)Ceph与Bcache结合
上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速. 1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME ...
- 微软RDL远程代码执行超高危漏洞(CVE-2024-38077)漏洞检测排查方式
漏洞名称:微软RDL远程代码执行超高危漏洞(CVE-2024-38077) CVSS core: 9.8 漏洞描述: CVE-2024-38077 是微软近期披露的一个极其严重的远程代码执行漏洞. ...
- JavaScript – ES Module
前言 关于 JavaScript Modular 的多种版本和历史看这篇. 参考: 阮一峰 – Module 的语法 阮一峰 – Module 的加载实现 Export 语法 逐个 export 在想 ...
- Email 关于 POP3 IMAP SMTP office365 Outlook Gmail G-Suit shared mailbox小小理解
Outlook 是微软的一个 email 软件, 管理 email 的 UI. Gmail 是 google 的 office365 是一个配套, 里面有 email, one drive, exce ...
- Windows右下角时间显示到秒(改注册表)
事件起因: 由于京东秒杀,要准点抢购,于是想着能不能把Windows右下角的时间显示到秒,于是在网上查了一下,修改注册表即可 解决办法: 新建一个 ShowSecondsInSystemClock ...
- 一些rand()的测试
rand()生成的伪随机数已经足够我们实用,为了跟好的理解rand()跟seed的关系,做了一些测试! rand()函数种子默认为1,在每一次程序运行中,随机数相同,在一次运行中,可将生成数看做随机 ...
- 北京智和信通PON.EPON.GPON运维解决方案,全面管理OLT.ONU等设备
高质量.高可靠.高安全性的网络已成为助力企事业单位高速发展的基石.PON网络采用先进的无源光纤通信技术与自动化融合,构建新兴一体化网络体系,可以有效构造安全可靠的生产办公网络.因此,交通.制造.能源. ...