菜鸟笔记
提升您的技术认知

docker registry镜像管理-ag真人游戏

docker仓库在2.1版本中支持了删除镜像的api,但这个删除操作只会删除镜像元数据,不会删除层数据。在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据。

部署镜像仓库

(1)启动仓库容器

$ sudo docker run -d -v /home/config.yml:/etc/docker/registry/config.yml -p 5000:5000 --name test_registry registry:2.4.1

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

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

$ docker tag centos 192.168.119.1:5000/xcb/centos
$ docker push 192.168.119.1:5000/xcb/centos
thepushrefersto a repository [192.168.119.1:5000/xcb/centos]
5f70bf18a086: pushed 
4012bfb3d628: pushed
latest: digest: sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6 size: 1331

(3)查看数据进行仓库容器中,通过du命令查看大小,可以看到当前仓库数据大小为61m。

$ docker exec -it test_registry /bin/bash
$ du -sch /var/lib/registry
61m .
61m total

删除镜像

删除镜像对应的api如下:

delete /v2//manifests/

name:镜像名称

reference: 镜像对应sha256值

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

$ curl -i -x delete http://192.168.119.1:5000/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)查看数据大小

$ /var/lib/registry# du -sch
61m .
61m total

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

垃圾回收

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

命令:

registry garbage-collect config.yml
$ /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)查看数据大小

$ /var/lib/registry# du -sch            
108k .
108k total

可以看到镜像数据已被删除,从61m变成了108k。

网站地图