docker私有倉庫刪除image

docker倉庫存放着公司內部的鏡像、時間長了難免存在一些廢棄的鏡像在裏面。如果不刪除造成空間的浪費。下面就簡單的看看倉庫中的鏡像是怎麼刪除的。

第一步:registry啓動依賴config.yml配置文件:在默認文件的storage區域中添加delete_enable_ture配置項。也可以在啓動時候指定-e添加。允許刪除鏡像:

配置文件:

wKiom1nAwMyxKZNnAABTQuETG9Q515.png

第二步:下載registry鏡像並啓動容器。

docker run  -d -v /conf/:/etc/docker/registry -v /opt/registry:/var/lib/registry -p5000:5000 --restart=always --name registry docker.io/registr y:latest

wKiom1nAvaKhsjXcAACTVyOn2Bo147.png

第三步:上傳鏡像

wKiom1nAvaPBkUCqAACaC-uBPSU014.png

前邊三個步驟都是爲刪除鏡像做準備。現在正式開始刪除操作。

先看下官網怎麼說:

wKioL1nAvXCgl0DeAABh0RIC9vE676.png

語法非常簡單。官網上註明可以通過name和digest刪除image。name我們是知道的。現在去獲取digest:

wKiom1nAvaOR8CZeAAB7NreWI_k506.png

刪除一個image所需要的name和digest都有了。現在執行刪除操作:

[root@docker1 ~]# curl -XDELETE 127.0.0.1:5000/v2/registry_test/manifests/sha256:48b7957fb8794 3139789779c6e1448ce3cbd52adf1eba62f4633c0e289c08c1b

wKioL1nAvXHzQT1TAAB5CN96aG0109.png

看似已經刪除了,其實硬盤地址並沒有釋放。是因爲docker刪除image只是刪除的image的元數據信息。層數據並沒有刪除。現在進入registry中進行垃圾回收

[root@docker1 ~]# docker exec -it <容器ID|容器名稱> /bin/sh
/ # cd /var/lib/registry/
/var/lib/registry # du -sch
10.3M    .
10.3M    total
/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml
/var/lib/registry # du -sch
28.0K    .
28.0K    total

這樣就達到我們的目的了。及刪除了倉庫容器,又釋放了磁盤空間

注意事項:

1、registry配置文件:如果想要進行倉庫images的刪除操作: 至少要添加REGISTRY_STORAGE_DELETE_ENABLED: true這個環境變量也就是第一步標註的

2、獲取digest:自從registry2.3之後,獲取digest需要進行安全檢查。所以必須加頭部信息Accept: application/vnd.docker.distribution.manifest.v2+json。否則獲取到的digest將不能使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章