सभी डॉकटर वॉल्यूम कैसे निकालें?


94

यदि मैं ऐसा करता docker volume lsहूं, तो मेरे संस्करणों की सूची इस प्रकार है:

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

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

जवाबों:


194

सभी अप्रयुक्त डेटा (कंटेनरों के बिना संस्करणों सहित) को हटाने का आधिकारिक आदेश डॉक 1.13 के साथ होगा

docker system prune  

यदि आप अकेले वॉल्यूम को सीमित करना चाहते हैं, तो केवल अप्रयुक्त वॉल्यूम को हटा दें :

docker volume prune

आपके पास भी है docker image prune, docker container pruneआदि:
"अधिक अप्रयुक्त डॉकटर ऑब्जेक्ट्स " पर देखें।

प्रतिबद्ध देखें 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) तरीका पीआर 14242 और docker volumeकमांड के साथ पेश किया गया था , जो जुलाई 2015 में अपनी टिप्पणी में दस्तावेज :

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

यह बहुत अच्छा है, धन्यवाद। मैं नए pruneआदेशों के बारे में नहीं जानता था ।
ट्रीफेस

3
प्रून कमांड महान हैं, लेकिन उनके साथ सावधान रहें। ऐसा लगता है जैसे वे मानते हैं कि कंटेनर उस समय चल रहे हैं जब आप उन्हें कॉल करते हैं। यह उन चीज़ों को शुद्ध करेगा जो संबद्ध हो सकते हैं लेकिन सक्रिय रूप से उपयोग में नहीं (जैसे नेटवर्क) अगली बार मौजूदा कंटेनरों के शुरू होने में विफल हो सकते हैं। danglingसमय से पहले फ़िल्टर का उपयोग करें यदि आप अनिश्चित हैं कि क्या
छंटनी

docker system pruneस्थानीय संस्करणों को हटाने के लिए प्रतीत नहीं होता है, लेकिन docker volume pruneइसे
छाँटते हैं

23

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

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

$ docker volume ls -qf dangling=true

साफ - सफाई:

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

ls के बारे में अधिक जानकारी यहाँ , rm के बारे में यहाँ


1
मैं --dry-runपहले पैरामीटर के साथ झूलने वाले संस्करणों की सूची का परीक्षण किए बिना इसे नहीं चलाऊंगा ।
सेर्गेई रोडियोनोव

कोई --dry-runविकल्प नहीं है।
हराल्ड एम्बर

1
यह उत्तर वह है यदि आप सभी संस्करणों को हटाना चाहते हैं, तो कोई बात नहीं। धन्यवाद!
मुचैत यिमलाज़

5

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

अनाथ कर्ता संस्करणों को / var / lib / docker / संस्करणों और / var / lib / docker / vfs / dir Docker संस्करण में 1.4.1 तक हटाने के लिए शेल्स्क्रिप्ट 1.11.x तक

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

डॉकटर 1.9 और उसके बाद के बारे में ध्यान दें

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

सूची:

$ 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

3

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

$ docker volume rm $(docker volume ls -qf dangling=true | xargs)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.