Docker(十二)-Docker Registry鏡像管理


Registry刪除鏡像、垃圾回收

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/<name>/manifests/<reference>

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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM