सभी Docker स्थानीय Docker छवियों को कैसे हटाएं


269

मैं हाल ही में डोकर उपयोग शुरू कर दिया है और कभी नहीं एहसास हुआ कि मैं का उपयोग करना चाहिए docker-compose downके बजाय ctrl-cया docker-compose stopअपने प्रयोगों से छुटकारा पाने के। अब मेरे पास स्थानीय रूप से बड़ी संख्या में अनावश्यक डॉकटर छवियां हैं।

क्या कोई ध्वज है जिसे मैं सभी स्थानीय डॉकरों की छवियों और कंटेनरों को हटाने के लिए चला सकता हूं?

कुछ - जैसे docker rmi --all --forceझंडा मौजूद नहीं है, लेकिन मैं कुछ इसी तरह के विचार के साथ देख रहा हूं।



2
docker images purge-> आपके सभी
डॉकटर

docker image ls -q | xargs -I {} docker image rm -f {}
Xargs के

@ मुथुकुमारहेलीस मुझे लगता है कि आप का मतलब है docker image prune(छवि एकवचन है और यह शुद्ध के बजाय प्रून है )।
एंड्रेस मेजा

जवाबों:


538

इसके वॉल्यूम सहित सभी कंटेनरों को हटाने के लिए,

docker rm -vf $(docker ps -a -q)

सभी छवियों को हटाने के लिए,

docker rmi -f $(docker images -a -q)

याद रखें, आपको उन सभी छवियों को हटाने से पहले सभी कंटेनरों को हटा देना चाहिए जिनसे उन कंटेनरों का निर्माण किया गया था।

यदि आप Windows (Powershell) पर काम कर रहे हैं,

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -aजब चल रहा हैdocker rmi -f $(docker images -a -q)
आशुतोष चमोली

25
@ आशुतोष चमोली: सीएमडी में काम नहीं करता, पॉवरशेल में काम करता है।
जैक

4
docker images -a -q | % { docker image rm $_ -f }
पावरशेल के

4
मैं 100 बार यहां आया हूं। इस उत्तर को लिखने के लिए धन्यवाद!
अजय मैती


177

सब कुछ हटाने के लिए इसका उपयोग करें :

docker system prune -a --volumes

सभी अप्रयुक्त कंटेनरों, संस्करणों, नेटवर्क और छवियों को हटा दें

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description


1
हालाँकि, सभी डिस्क स्थान को पुनः प्राप्त नहीं करता है।
lucian303

@ lucian303 यह दृष्टिकोण डिस्क स्थान को पुनः प्राप्त करता है। हो सकता है कि आप किसी विशेष मुद्दे का सामना कर रहे हों।
रॉबर्ट

मैं केवल वांछित परिणाम प्राप्त करने के लिए लगता है जब मैं ऐसा करता हूं और @techtabu के उत्तर में कदम
sir_dancealot

33

सब कुछ स्पष्ट करने के लिए:

$ docker system prune --all

सब कुछ का मतलब है:

  • सभी कंटेनरों को रोक दिया
  • सभी नेटवर्क कम से कम एक कंटेनर द्वारा उपयोग नहीं किए जाते हैं
  • कम से कम एक कंटेनर के बिना सभी चित्र उनसे जुड़े
  • सभी कैश का निर्माण करते हैं

26

docker image prune -a

सभी अप्रयुक्त छवियों को निकालें, न कि केवल झूलने वाले। -fबल में विकल्प जोड़ें ।

स्थानीय डोकर संस्करण: 17.09.0-CE, Git कमिट: afdb6d4, OS / Arch: darwin-amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

7

आसान और आसान कमांड

सभी छवियों को हटाने के लिए

docker rmi $(docker images -a)

कंटेनरों को हटाने के लिए जो बाहर की स्थिति में हैं

docker rm $(docker ps -a -f status=exited -q)

उन कंटेनरों को हटाने के लिए जो निर्मित अवस्था में हैं

docker rm $(docker ps -a -f status=created -q)

नोट: सभी कंटेनरों को हटा दें और फिर छवियों को हटा दें


सभी छवियों को हटाने के लिए, - "docker rmi $ (docker images -a -q)" होना चाहिए। -q सिर्फ छवि आईडी लौटाता है
जिमी एमजी लिम

इसका मतलब है कि यह उन छवियों को हटा दिया है। एक बार फिर से देखें
दीप निर्मल

3

सभी छवियों को हटाने के लिए:

docker rmi -f $(docker images -a | awk {'print $3'})

स्पष्टीकरण:

docker की छवियाँ -a | awk {'प्रिंट $ 3'}

यह कमांड सभी इमेज आईडी को वापस कर देगा और फिर इसकी आईडी का उपयोग करके इमेज को डिलीट कर देगा।


3

हटाने वाले के बिना हटाएं :

rm -rf /var/lib/docker

यह सलाह नहीं दी जाती है कि क्या आप सामान्य रूप से डॉक कर सकते हैं, लेकिन यदि आप जिन कारणों से नहीं कर सकते हैं या नहीं करना चाहते हैं, तो यह काम करेगा।


2

आप इस तरह की कोशिश कर सकते हैं:

docker system prune

मेरे मामले में यह एक वॉल्यूम को हटा देगा जिसका उपयोग मैं अभी भी करता हूं। यदि आप यह नहीं जानते कि इसका प्रयोग न करें
Zach Smith

2

सभी छवियों को हटाने के लिए:

docker rmi $(docker images -a -q)

जहां -a सभी है, और -q केवल छवि आईडी है

अप्रयुक्त छवियों, और कंटेनरों को हटाने के लिए:

docker system prune

सावधान रहें जैसे कि आप docker swarm का उपयोग कर रहे हैं, और आपकी स्थानीय मशीन रिमोट झुंड (प्रबंधक / कार्यकर्ता के रूप में) में शामिल हो रही है, आपका स्थानीय तैनात रेपो होगा। इस प्रकार इसे क्रियान्वित करने से तैनात चित्र हट जाते हैं।


2
docker rmi $(docker images -q) --force

2
किसी पोस्ट पर उत्तर छोड़ते समय आपको कुछ स्पष्टीकरण जोड़ना चाहिए, ताकि बाद में इसे खोजने वाले अन्य इसे समझ सकें।
Morphyish

1

Techtabu के स्वीकृत उत्तर को जोड़ते हुए, यदि आप विंडोज़ पर docker का उपयोग कर रहे हैं, तो आप निम्न कमांड का उपयोग कर सकते हैं

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

यहां, कमांड docker ps -a -qसभी छवियों को सूचीबद्ध करता है और यह सूची docker rmएक-एक करके पास की जाती है

विंडोज़ सीएमडी में इस प्रकार का कमांड प्रारूप कैसे काम करता है, इस बारे में अधिक जानकारी के लिए इसे देखें ।


1

एक और तरीका है xargs

docker image ls -q | xargs -I {} docker image rm -f {}

0

सभी Docker स्थानीय Docker छवियों को हटाने के लिए 2 चरणों का पालन करें ::

चरण 1: डॉकटर छवियां (आईडी के साथ सभी डॉकरों की सूची देखें)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

चरण 2: docker image rm 31e522c6cfe4 (IMAGE ID)

      OUTPUT : image deleted
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.