詳解Docker Registry之刪除鏡像、垃圾回收
Docker倉(cāng)庫(kù)在2.1版本中支持了刪除鏡像的API,但這個(gè)刪除操作只會(huì)刪除鏡像元數(shù)據(jù),不會(huì)刪除層數(shù)據(jù)。在2.4版本中對(duì)這一問(wèn)題進(jìn)行了解決,增加了一個(gè)垃圾回收命令,刪除未被引用的層數(shù)據(jù)。本文對(duì)這一特性進(jìn)行了體驗(yàn),具體步驟如下。
1、部署鏡像倉(cāng)庫(kù)
(1)啟動(dòng)倉(cāng)庫(kù)容器
dockerrun -d -v /home/config.yml:/etc/docker/registry/config.yml -p 4000:5000 --nametest_registryregistry:2.4.1
這里需要說(shuō)明一點(diǎn),在啟動(dòng)倉(cāng)庫(kù)時(shí),需在配置文件中的storage配置中增加delete=true配置項(xiàng),允許刪除鏡像,本次試驗(yàn)采用如下配置文件:
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)查看數(shù)據(jù)進(jìn)行倉(cāng)庫(kù)容器中,通過(guò)du命令查看大小,可以看到當(dāng)前倉(cāng)庫(kù)數(shù)據(jù)大小為61M。
root@SZX1000041895:~# docker exec -it test_registry /bin/bash root@e6d36b0d7e86:/# du -sch /var/lib/registry 61M . 61M total
2、刪除鏡像
刪除鏡像對(duì)應(yīng)的API如下:
DELETE /v2/<name>/manifests/<reference>
name:鏡像名稱
reference: 鏡像對(duì)應(yīng)sha256值
(1)發(fā)送請(qǐng)求,刪除剛才上傳的鏡像
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)查看數(shù)據(jù)大小
root@e6d36b0d7e86:/var/lib/registry# du -sch 61M . 61M total
可以看到數(shù)據(jù)大小沒有變化(只刪除了元數(shù)據(jù))
3、垃圾回收
(1)進(jìn)行容器執(zhí)行垃圾回收命令
命令:
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)查看數(shù)據(jù)大小
root@e6d36b0d7e86:/var/lib/registry# du -sch 108K . 108K total
可以看到鏡像數(shù)據(jù)已被刪除,從61M變成了108K
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker中安裝Redis并開啟遠(yuǎn)程訪問(wèn)的詳細(xì)步驟
這篇文章主要介紹了Docker中安裝Redis并開啟遠(yuǎn)程訪問(wèn)的詳細(xì)步驟,文中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-01-01
docker mysql鏡像因?yàn)榕渲梦募霈F(xiàn)錯(cuò)誤一直提示重啟的解決
這篇文章主要介紹了docker mysql鏡像因?yàn)榕渲梦募霈F(xiàn)錯(cuò)誤一直提示重啟的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
通過(guò)Docker?Compose部署MySQL的詳細(xì)教程
Docker?Compose?作為?Docker?官方的容器編排工具,為?MySQL?數(shù)據(jù)庫(kù)部署帶來(lái)了顯著優(yōu)勢(shì),下面小編就來(lái)為大家詳細(xì)介紹一下具體的流程吧2025-03-03
docker啟動(dòng)ES內(nèi)存溢出的解決方案
這篇文章主要介紹了docker啟動(dòng)ES內(nèi)存溢出的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟
本文主要介紹了docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

