2015-09-09 8 views
9

मेरे पास कुछ स्वचालित प्रक्रियाएं हैं जो सार्थक लेबल के साथ टैग की गई डॉकर छवियों का एक समूह है। लेबल एक संरचित पैटर्न का पालन करें।टैग द्वारा डॉकर छवियों को मैं कैसे हटा सकता हूं, अधिमानतः वाइल्डकार्डिंग के साथ?

टैग द्वारा छवियों को ढूंढने और हटाने का कोई तरीका है? तो मान मैं छवियों: डोकर RMI -tag stuff_ *

कोई अच्छा तरीका है कि अनुकरण करने के लिए:

REPOSITORY     TAG 
junk/root     stuff_687805 
junk/root     stuff_384962 

आदर्श रूप में मैं ऐसा करने में सक्षम होना चाहते हैं?

उत्तर

5

मज़ा:

docker rmi $(docker images | grep stuff_ | tr -s ' ' | cut -d ' ' -f 3) 
+1

क्यों नहीं: 'डॉकर आरएमआई $ (डॉकर छवियां | aws '$ 2 ~/सामान _/{प्रिंट $ 1}') – BMW

+2

' aws' या 'awk'? –

0

डॉकर filtering प्रदान करता है जिसे आप labels के साथ उपयोग कर सकते हैं, लेकिन मुझे वाइल्डकार्ड समर्थन नहीं दिख रहा है।

docker images -f "label=mylabel=myvalue" 

इसके अलावा एक छवि में लेबल जोड़ने के आप एक LABEL कमांड के साथ Dockerfile करने के लिए जानकारी को जोड़ना होगा। जब तक आपने Dockerfile (यानी कमांडलाइन विकल्प नहीं मिला) को तब तक लेबल में जोड़ने का कोई तरीका नहीं मिला, हालांकि आप --label और --label-file (run docs) के साथ रनटाइम पर कंटेनर में जोड़ सकते हैं। बैश के साथ

3

तुम भी ग्रेप + आर्ग + xargs का उपयोग कर इसे पूरा कर सकते हैं:

docker images | grep "stuff_" | awk '{print $1 ":" $2}' | xargs docker rmi 
  • डोकर छवियों सूचियों सभी छवियों
  • ग्रेप "_stuff"
  • की खोज के आधार पर लाइनों का चयन करता है
  • awk
  • के बीच
  • xargs में पहले और दूसरे को कोलन से उन पंक्तियों के तर्कों (छवि नाम और टैग नाम) प्रिंट यह है के रूप में awk द्वारा लौटाए गए हर लाइन का उपयोग कमांड 'डोकर RMI' चलेंगे होगा तर्क

नोट:, ग्रेप खोज के साथ सावधान रहना के रूप में यह भी टैग के अलावा कुछ पर मेल खा सकते हैं, तो सबसे अच्छा पहले एक सूखी रन कार्य करें:

docker images | grep "stuff_" | awk '{print $1 ":" $2}' | xargs -n1 echo 
  • xargs -n1 -n1 झंडे का मतलब xargs नहीं समूह लाइनों एक साथ awk द्वारा दिया जाएगा, लेकिन उन्हें (बेहतर पठनीयता के लिए) एक समय
4

पर बाहर गूंज एक ही डोकर छानने का उपयोग करना:

docker rmi $(docker images --filter=reference="*:stuff_*" -q) 
  • reference="*:stuff_*" फिल्टर आप एक वाइल्डकार्ड का उपयोग कर छवियों को फिल्टर करने के लिए अनुमति देता है;
  • -q विकल्प केवल छवि आईडी प्रदर्शित करने के लिए है।
संबंधित मुद्दे