详解Docker Registry之删除镜像、垃圾回收
Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据。在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据。本文对这一特性进行了体验,具体步骤如下。
1、部署镜像仓库
(1)启动仓库容器
dockerrun-d-v/home/config.yml:/etc/docker/registry/config.yml-p4000: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#dockertagcentos10.229.43.217:4000/xcb/centos root@SZX1000041894:/home#dockerpush10.229.43.217:4000/xcb/centos Thepushreferstoarepository[10.229.43.217:4000/xcb/centos] 5f70bf18a086:Pushed 4012bfb3d628:Pushed latest:digest:sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6size:1331
(3)查看数据进行仓库容器中,通过du命令查看大小,可以看到当前仓库数据大小为61M。
root@SZX1000041895:~#dockerexec-ittest_registry/bin/bash root@e6d36b0d7e86:/#du-sch/var/lib/registry 61M. 61Mtotal
2、删除镜像
删除镜像对应的API如下:
DELETE/v2//manifests/
name:镜像名称
reference:镜像对应sha256值
(1)发送请求,删除刚才上传的镜像
root@SZX1000041894:/home#curl-I-XDELETEhttp://10.229.43.217:4000/v2/xcb/centos/manifests/sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6 HTTP/1.1202Accepted Docker-Distribution-Api-Version:registry/2.0 X-Content-Type-Options:nosniff Date:Wed,06Jul201609:24:15GMT Content-Length:0 Content-Type:text/plain;charset=utf-8
(2)查看数据大小
root@e6d36b0d7e86:/var/lib/registry#du-sch 61M. 61Mtotal
可以看到数据大小没有变化(只删除了元数据)
3、垃圾回收
(1)进行容器执行垃圾回收命令
命令:
registrygarbage-collectconfig.yml
root@e6d36b0d7e86:/var/lib/registry#registrygarbage-collect/etc/docker/registry/config.yml INFO[0000]Deletingblob:/docker/registry/v2/blobs/sha256/96/9687900012707ea43dea8f07a441893903dd642d60668d093c4d4d2c5bedd9ebgo.version=go1.6.2instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58 INFO[0000]Deletingblob:/docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4go.version=go1.6.2instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58 INFO[0000]Deletingblob:/docker/registry/v2/blobs/sha256/c3/c3bf6062f354b9af9db4481f24f488da418727673ea76c5162b864e1eea29a4ego.version=go1.6.2instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58 INFO[0000]Deletingblob:/docker/registry/v2/blobs/sha256/5b/5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6go.version=go1.6.2instance.id=4d875a6c-764d-4b2d-a7c2-4e85ec2b9d58
(2)查看数据大小
root@e6d36b0d7e86:/var/lib/registry#du-sch 108K. 108Ktotal
可以看到镜像数据已被删除,从61M变成了108K
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。