हाँ, उन्होंने इसे आसान नहीं बनाया और यह अभी भी सही नहीं है, लेकिन वी 2 रजिस्ट्री एपीआई में अब छवियों को हटाने की क्षमता है ।
क्या मैं बस और सुरक्षित रूप से फ़ोल्डर वी 2/रिपॉजिटरी/छवि_नाम/_मैनिफेस्ट/टैग/संस्करण को हटा सकता हूं
वास्तविक छवि डेटा डिस्क पर ब्लॉब्स निर्देशिका में संग्रहीत किया जाता है, लेकिन उन्हें अलग-अलग मैनिफ़ेस्ट के बीच साझा किया जाता है, इसलिए उस निर्देशिका को शुद्ध करना सुरक्षित नहीं है जब तक कि आपने उन सभी छवियों पर विचार नहीं किया है जो ब्लॉब्स साझा कर सकते हैं ।
वी 2 डॉकर एपीआई का उपयोग करके एक छवि को हटाने की विधि यहां दी गई है:
सबसे पहले, आपकी रजिस्ट्री को हटाना सक्षम होना चाहिए । या तो एनवी संस्करण सेट करें:
REGISTRY_STORAGE_DELETE_ENABLED: "true"
या config.वाईएमएल को सेट करना होगा
storage: delete: enabled: true
इसके बाद, एपीआई कॉल के माध्यम से विलोपन चलाएं (आप आसानी से डाकिया के माध्यम से परीक्षण कर सकते हैं या सिर्फ कर्ल/आदि का उपयोग कर सकते हैं)
नोट: नीचे कॉल में, जोड़ें "Accept: application/vnd.docker.distribution.manifest.v2+json"
करने के लिए HTTP शीर्ष लेख
-
छवि डाइजेस्ट इकट्ठा करें:
HEAD https://myprivateregistry:5001/v2/<image_name>/manifests/<image_tag>
यह कॉल हेडर कुंजी देता है Docker-Content-Digest
इस तरह एक मूल्य के साथ: sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd
-
चरण 2 से उस मान का उपयोग करके, चलाएँ DELETE
http कॉल:
DELETE https://myprivateregistry:5001/v2/<image_name>/manifests/sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd
एपीआई रिटर्न 202 Accepted
-
यदि आप इसके अगले निर्धारित रन की प्रतीक्षा नहीं करना चाहते हैं तो कचरा संग्रह मैन्युअल रूप से चलाएं: registry garbage-collect /etc/docker/registry/config.yml
उदाहरण यदि रजिस्ट्री को कंटेनर के रूप में चलाना है: docker exec -t registry-test ./bin/registry garbage-collect /etc/docker/registry/config.yml
कचरा कलेक्टर आपके लिए डिस्क से संबंधित ब्लब्स और मैनिफेस्ट को हटा देता है ।
इस बिंदु पर छवि:टैग डिस्क से पूरी तरह से हटा दिया गया है और रजिस्ट्री से शुद्ध किया गया है । बूँदें हटा दी जाती हैं और आप मैनिफ़ेस्ट से चले गए देखेंगे v2/repositories/<image_name>/_manifests
नोट: यदि यह आपके रेपो में अंतिम छवि थी, तो आपको अभी भी डिस्क से रेपो लिस्टिंग को मैन्युअल रूप से हटाना होगा (v2/repositories/<image_name>/_layers
)- हालांकि यह सिर्फ मेटाडेटा है । वास्तविक छवि डेटा पहले ही हटा दिया गया है । मेरा मानना है कि यह कचरा कलेक्टर में एक बग हो सकता है । मेरे पास इसके बारे में एक सवाल है: डॉकर निजी रजिस्ट्री-सभी छवियों को हटा दिया, लेकिन फिर भी कैटलॉग में दिखा रहा है
अधिक जानकारी:
https://docs.docker.com/registry/spec/api/#deleting-an-imagehttps://jsosic.wordpress.com/2017/01/23/deleting-images-from-docker-registry/