ऐसा लगता है कि आज तक रजिस्ट्री से छवियों को हटाने का कोई सरल तरीका नहीं है और रजिस्ट्री के लिए इसकी एक विशेषता की तरह दिखता है 2.1 मील का पत्थर.
विकल्पों में से एक आज हमारे पास यह काम नहीं कर रहा है
anovil@ubuntu-anovil remove-registry]$ curl -X DELETE localhost:5000/v2/alpine/manifests/v1{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}[anovil@ubuntu-anovil remove-registry]$
इसे मैन्युअल रूप से रजिस्ट्री से ही हटाना है । गलती से गलत फ़ाइल को हटाने से बचने के लिए, मैंने इसका परीक्षण किया इस स्क्रिप्ट से github. मैं इस बात की कोई गारंटी नहीं लेता कि यह स्क्रिप्ट कैसे काम करती है (हालांकि मैंने इसका परीक्षण करने से पहले इसे जल्दी से जांच लिया) ।
इसलिए, मैंने एक परीक्षण किया और यह काम करने लगता है :)
[1] मुझे लगता है कि, आप डॉकर के साथ ही एक रजिस्ट्री चला रहे हैं ।
[anovil@ubuntu-anovil remove-registry]$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES88f8e1a1d7a7 registry:2 "/bin/registry /etc/d" 37 minutes ago Up 37 minutes 0.0.0.0:5000->5000/tcp registry[anovil@ubuntu-anovil remove-registry]$
[2] मैंने बस के साथ एक न्यूनतम डॉकरफाइल बनाया FROM alpine
सामग्री और बनाया अल्पाइन: वी 1 और लोकलहोस्ट पर चल रही मेरी निजी रजिस्ट्री को धक्का दिया:5000 । इसे रजिस्ट्री से क्वेरी करते हुए, यह उम्मीद के मुताबिक वापस आ गया ।
[anovil@ubuntu-anovil remove-registry]$ curl -X GET localhost:5000/v2/alpine/tags/list{"name":"alpine","tags":["v1"]}[anovil@ubuntu-anovil remove-registry]$
[3] फिर मैं रजिस्ट्री में लॉग इन करता हूं docker exec
और अपना प्रयोग करने से पहले डिस्क उपयोग की जाँच की
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#
[4] अपने मेजबान पर वापस लौटने के बाद मैंने एक भारी फ़ाइल (मोंगोडीबी । टीजीजेड) मेरे कंटेनर में और एक निर्मित और धक्का दिया संस्करण वी 2 बनाया ।
[anovil@ubuntu-anovil remove-registry]$ docker build -t localhost:5000/alpine:v2 .Sending build context to Docker daemon 61.99 MBStep 1 : FROM alpine ---> 2314ad3eeb90Step 2 : COPY mongodb.tgz /mongodb.tgz ---> d7c7645a3fe2Successfully built d7c7645a3fe2[anovil@ubuntu-anovil remove-registry]$ docker push localhost:5000/alpine:v2The push refers to a repository [localhost:5000/alpine] (len: 1)d7c7645a3fe2: Pushed 5ff05309724e: Image already exists v2: digest: sha256:7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774 size: 4467[anovil@ubuntu-anovil remove-registry]$
[5] रजिस्ट्री में फिर से आकार की जांच करने के बाद, यह बढ़कर 62 एमबी हो गया है:
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 62M /var/lib/registry/62M totalroot@88f8e1a1d7a7:/#
[6] चलाने के लिए delete_docker_registry_image
, आपको स्क्रिप्ट को कंटेनर में लाने की आवश्यकता है जो रजिस्ट्री की मेजबानी कर रहा है, ऐसा करने का एक विकल्प कर्ल के साथ है । साथ ही, इस स्क्रिप्ट की आवश्यकता है jq
.
root@88f8e1a1d7a7:/# apt-get update && apt-get install -y curl jq...root@88f8e1a1d7a7:/#
[7] स्क्रिप्ट चलाएं, इसके साथ प्रयास करें --dry-run
पहले विकल्प और संस्करण टैग (इस मामले में वी 2) को मत भूलना, एक अच्छा भी है -h
root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 --dry-runDRY_RUN: would have deleted tag directory: repositories/alpine/_manifests/tags/v2DRY_RUN: would have deleted manifest revision: repositories/alpine/_manifests/revisions/sha256/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted directory: blobs/sha256/e2/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6DRY_RUN: would have deleted directory: blobs/sha256/7a/7ada67971e952e353ab14d8f9bdd4e41e4c41099b05a5da09f2700b51d93908aDRY_RUN: would have deleted directory: blobs/sha256/7b/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted layer metadata directory: repositories/alpine/_layers/sha256/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 root@88f8e1a1d7a7:/#
[8] और वोइला !!
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#