详解Docker Registry之删除镜像、垃圾回收

来源:https://www.jb51.net/article/111837.htm

本篇文章主要介绍了详解Docker Registry之删除镜像、垃圾回收,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据。在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据。本文对这一特性进行了体验,具体步骤如下。

1、部署镜像仓库

(1)启动仓库容器

复制代码代码如下:

docker run -d -v /home/jyapp/docker/config.yml:/etc/docker/registry/config.yml -v /opt/registry:/var/lib/registry -p 5000:5000 --name registry2.4.1 registry:2.4.1

这里需要说明一点,在启动仓库时,需在配置文件中的storage配置中增加delete=true配置项,允许删除镜像,本次试验采用如下配置文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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)上传镜像

1

2

3

4

5

6

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。

1

2

3

4

root@SZX1000041895:~# docker exec -it test_registry /bin/bash

root@e6d36b0d7e86:/# du -sch /var/lib/registry

61M .

61M total

2、删除镜像

删除镜像对应的API如下:

1

DELETE /v2/<name>/manifests/<reference>

name:镜像名称

reference: 镜像对应sha256值

(1)发送请求,删除刚才上传的镜像

1

2

3

4

5

6

7

root@SZX1000041894:/home# curl -I -X DELETEhttp://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)查看数据大小

1

2

3

root@e6d36b0d7e86:/var/lib/registry# du -sch

61M .

61M total

可以看到数据大小没有变化(只删除了元数据)

3、垃圾回收

(1)进行容器执行垃圾回收命令

命令:

1

registry garbage-collect config.yml

1

2

3

4

5

root@e6d36b0d7e86:/var/lib/registry# registry garbage-collect /etc/docker/registry/config.yml

INFO[0000] Deletingblob:/docker/registry/v2/blobs/sha256/96/9687900012707ea43dea8f07a441893903dd642d60668d093c4d4d2c5bedd9ebgo.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58

INFO[0000] Deletingblob:/docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58

INFO[0000] Deletingblob:/docker/registry/v2/blobs/sha256/c3/c3bf6062f354b9af9db4481f24f488da418727673ea76c5162b864e1eea29a4ego.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58

INFO[0000] Deletingblob:/docker/registry/v2/blobs/sha256/5b/5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6go.version=go1.6.2 instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58

(2)查看数据大小

1

2

3

root@e6d36b0d7e86:/var/lib/registry# du -sch           

108K .

108K total

可以看到镜像数据已被删除,从61M变成了108K

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值