वर्तमान में आप उस कार्य के लिए रजिस्ट्री एपीआई का उपयोग नहीं कर सकते हैं। यह आपको केवल एक रिपॉजिटरी या एक विशिष्ट टैग को हटाने की अनुमति देता है।
सामान्य तौर पर, रिपॉजिटरी को हटाने का अर्थ है, कि इस रेपो से जुड़े सभी टैग हटा दिए गए हैं।
किसी टैग को हटाने का अर्थ है, कि एक छवि और एक टैग के बीच का संबंध हटा दिया गया है।
उपरोक्त में से कोई भी एकल छवि नहीं हटाएगा। उन्हें आपकी डिस्क पर छोड़ दिया जाता है।
वैकल्पिक हल
इस वर्कअराउंड के लिए आपको अपने docker की छवियों को स्थानीय स्तर पर संग्रहित करना होगा।
आपके समाधान के लिए वर्कअराउंड सभी लेकिन नवीनतम टैग को हटाना होगा और इस तरह संबंधित छवियों के संदर्भ को संभावित रूप से हटा देगा। फिर आप इस स्क्रिप्ट को सभी छवियों को हटाने के लिए चला सकते हैं , जो किसी भी टैग या किसी भी उपयोग की गई छवि के वंश द्वारा संदर्भित नहीं हैं।
शब्दावली (चित्र और टैग)
इस तरह से एक छवि ग्राफ पर विचार करें जहां पूंजी अक्षर ( A
, B
...,) लघु छवि आईडी का प्रतिनिधित्व करते हैं और <-
इसका मतलब है कि एक छवि दूसरी छवि पर आधारित है:
A <- B <- C <- D
अब हम चित्र में टैग जोड़ते हैं:
A <- B <- C <- D
| |
| <version2>
<version1>
यहां, टैग <version1>
छवि का संदर्भ देता है C
और टैग <version2>
छवि का संदर्भ देता है D
।
अपने प्रश्न को परिष्कृत करना
अपने प्रश्न में आपने कहा था कि आप हटाना चाहते थे
सभी चित्र लेकिन latest
। अब, यह शब्दावली बिल्कुल सही नहीं है। आपने मिश्रित चित्र और टैग लगाए हैं। ग्राफ़ को देखकर मुझे लगता है कि आप सहमत होंगे कि टैग <version2>
नवीनतम संस्करण का प्रतिनिधित्व करता है। वास्तव में, इस प्रश्न के अनुसार आपके पास एक टैग हो सकता है जो नवीनतम संस्करण का प्रतिनिधित्व करता है:
A <- B <- C <- D
| |
| <version2>
| <latest>
<version1>
चूंकि <latest>
टैग संदर्भ छवि D
मैं आपसे पूछता हूं: क्या आप वास्तव में सभी लेकिन छवि को हटाना चाहते हैं D
? शायद ऩही!
यदि आप कोई टैग हटाते हैं तो क्या होता है?
यदि आप <version1>
डॉकर रीस्ट एपीआई का उपयोग करके टैग हटाते हैं, तो आपको यह मिलेगा:
A <- B <- C <- D
|
<version2>
<latest>
याद रखें: डॉकर एक छवि को कभी नहीं हटाएगा! अगर ऐसा किया है, तो भी इस मामले में यह एक छवि को नष्ट नहीं कर सकता, क्योंकि छवि उस छवि C
के लिए वंश का हिस्सा है D
जिसे टैग किया गया है।
यहां तक कि अगर आप इस स्क्रिप्ट का उपयोग करते हैं , तो कोई भी छवि नहीं हटाई जाएगी।
जब एक छवि को हटाया जा सकता है
इस शर्त के तहत कि आप नियंत्रित कर सकते हैं जब कोई आपकी रजिस्ट्री को खींच सकता है या धकेल सकता है (जैसे कि REST इंटरफ़ेस को अक्षम करके)। यदि आप किसी अन्य छवि पर आधारित नहीं हैं और कोई भी टैग संदर्भित नहीं करता है, तो आप एक छवि ग्राफ से एक छवि को हटा सकते हैं।
ध्यान दें कि निम्नलिखित ग्राफ में, छवि D
है नहीं के आधार पर C
लेकिन पर B
। इसलिए, D
पर निर्भर नहीं करता है C
। यदि आप <version1>
इस ग्राफ़ में टैग हटाते हैं , तो छवि C
किसी भी छवि द्वारा उपयोग नहीं की जाएगी और यह स्क्रिप्ट इसे हटा सकती है।
A <- B <--------- D
\ |
\ <version2>
\ <latest>
\ <- C
|
<version1>
सफाई के बाद आपकी छवि का ग्राफ़ इस तरह दिखता है:
A <- B <- D
|
<version2>
<latest>
क्या ये वही है जो तुम चाहते हो?