2016-04-16 6 views
24

अगर मैं एक docker volume ls करते हैं, मात्रा की मेरी सूची इस तरह है:सभी डॉकर वॉल्यूम्स को कैसे हटाएं?

DRIVER    VOLUME NAME 
local    305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a 
local    226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319 
... 
... 
local    209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301 

और मैं अपने संस्करणों की एक बार में सभी निकालना चाहते हैं। मैं यह कैसे कर सकता हूं?

उत्तर

43

सभी अप्रयुक्त डेटा निकालने के लिए सरकारी आदेश के बारे में (इंक कंटेनरों के बिना मात्रा luding) होगा डोकर 1,13

docker system prune 

साथ हो तुम अकेले मात्रा को सीमित करना चाहते हैं, removing only unused volumes:
पर अधिक देखें ":

docker volume prune 

तुम भी docker image prune, docker container prune, आदि है Prune unused Docker objects "।

commit 86de7c0 और PR 26108 देखें।

आप play-with-docker.com में कार्रवाई में इसे देख सकते हैं:

/ # docker ps -a 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES 
1296a5e47ef3  hello-world   "/hello"   7 seconds ago  Exited (0) 6 seconds ago      prickly_poincare 

/# docker system prune 
WARNING! This will remove: 
     - all stopped containers 
     - all volumes not used by at least one container 
     - all networks not used by at least one container 
     - all dangling images 
Are you sure you want to continue? [y/N] y 
Deleted Containers: 
1296a5e47ef3ab021458c92ad711ad03c7f19dc52f0e353f56f062201aa03a35 

प्रबंध मात्रा की वर्तमान (पूर्व डोकर 1.13) जिस तरह से PR 14242 and the docker volume command, जो जुलाई 2015 से in its comment दस्तावेजों के साथ पेश किया गया:

docker volume rm $(docker volume ls -q --filter dangling=true) 
+0

यह बहुत अच्छा है, धन्यवाद। मुझे नए 'prune' कमांड के बारे में पता नहीं था। – treeface

12

2017 पर संपादित: इस उत्तर 16 अप्रैल '16 दिया गया था और अब पुरानी हो चुकी है, और केवल डोकर संस्करण 1.13 @VonC से जवाब का उपयोग करें करने से पहले के लिए सही, अब यह के रूप में सही रूप में चिह्नित है

अप्रयुक्त वॉल्यूम्स को हटाने के लिए आप अंतर्निहित डॉकर volume rm कमांड का उपयोग कर सकते हैं। rm आदेश भी /var/lib/docker/volumes में किसी भी निर्देशिका है कि एक मात्रा नहीं है हटाता है, तो सुनिश्चित करें कि आप वहाँ में कुछ भी डाल नहीं था आप को बचाने के लिए चाहते हैं: सही तुम्हारा से सूची संस्करणों के
कमान, छोटा सा:

$ docker volume ls -qf dangling=true 

सफाई:

$ docker volume rm $(docker volume ls -qf dangling=true) 

अधिक ls here के बारे में विवरण, rm here

+1

मैं के साथ इसे चलाने नहीं होगा '--dry-run' पैरामीटर के साथ मात्रा झूलते की सूची का परीक्षण के बिना प्रथम। –

+0

कोई '- ड्रा-रन' विकल्प नहीं है। –

2

यह वह जगह है जो मैं उपयोगी पाया गया है: https://github.com/chadoe/docker-cleanup-volumes

Shellscript/var/lib/डोकर/खंडों में अनाथ डोकर संस्करणों को हटाने के लिए और/var/lib/डोकर/वीएफएस/dir डोकर संस्करण 1.4.1 अप 1.11.x को

यह मूल रूप से किसी भी अनाथ/झूलने संस्करणों की एक सफाई करता है, लेकिन यह एक --dry-run शामिल है, लेकिन यह डोकर 1 के बारे में टिप्पणी के कुछ डोकर आदेशों को भी शामिल है (जो पिछला टिप्पणी में संदर्भित)

नोट बनाता है।9 और ऊपर

डॉकर 1.9 में अनाथ संस्करणों को हटाने के लिए और ऊपर आप इस डॉकर-क्लीनअप-वॉल्यूम्स स्क्रिप्ट के बजाय अंतर्निहित डॉकर वॉल्यूम कमांड का भी उपयोग कर सकते हैं। बिल्ट-इन कमांड भी/var/lib/डोकर/खंडों में किसी भी निर्देशिका है कि एक मात्रा तो सुनिश्चित करें कि आप वहाँ में कुछ भी डाल नहीं था आप सहेजना चाहते हैं नहीं हटाता है:

सूची:

$ docker volume ls -qf dangling=true 

सफाई:

$ docker volume rm $(docker volume ls -qf dangling=true) 

या, से निपटने को नो-सेशन बेहतर लेकिन लिनक्स विशिष्ट:

$ docker volume ls -qf dangling=true | xargs -r docker volume rm 
+0

इसमें से कुछ उपयोगी बिट्स जोड़े गए –

0

मार्क से सवाल और उधार लेने का जवाब करने के लिए, यह काम करता है:

$ docker volume rm $(docker volume ls -qf dangling=true | xargs) 
संबंधित मुद्दे