it-swarm.dev

كيف يمكن للمرء إزالة صورة في Docker؟

أقوم بتشغيل Docker ضمن Vagrant تحت OS X 10.8.4 (Mountain Lion) ، وعندما أحاول حذف صورة محفوظة ، تظهر لي رسالة خطأ:

$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input

وفقًا للمساعدة rmi ، يكون بناء الجملة الصحيح هو docker rmi IMAGE [IMAGE...] ، ولست متأكدًا مما يجب فعله من ذلك.

كيف يمكنني حذف صورة؟

$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1

$docker info
Containers: 1
Images: 3

ومن المثير للاهتمام ، عندما أقوم بتشغيل docker ps ، لا تظهر حاويات على الإطلاق. تشغيل docker images يعرض أربعة (4) base صورة واحدة (1) node.

771
Jules

جرب docker rmi node. التي يجب أن تعمل.

رؤية جميع الحاويات التي تم إنشاؤها بسيطة مثل docker ps -a.

لإزالة جميع الحاويات الموجودة (وليس الصور!) ، شغل docker rm $(docker ps -aq)

942
Nick Stinemates

فيما يلي بعض الطرق لإزالة صور/حاويات الإرساء:

إزالة صورة واحدة

docker rmi image_name:version/image-id

إزالة جميع الصور

docker rmi $(docker images -qf "dangling=true")

قتل الحاويات وإزالتها:

docker rm $(docker kill $(docker ps -aq))

ملاحظة: استبدل kill بـ stop للإغلاق الجميل

إزالة جميع الصور باستثناء "صورتي"

استخدم grep لإزالة الكل ما عدا my-image و ubuntu

docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})

أو (بدون awk)

docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))

535
Ulises

حذف جميع الحاويات عامل ميناء

docker rm $(docker ps -a -q)

حذف جميع الصور عامل ميناء

docker rmi $(docker images -q)
189
Chrysalis

لإزالة صورة من Docker باستخدام معرف الصورة:

  1. الحصول على قائمة جميع الصور

    docker images
    
  2. حدد معرف الصورة للصورة التي تريد حذفها ، على سبيل المثال:

    REPOSITORY     TAG     IMAGE ID        CREATED        VIRTUAL SIZE
    kweku360/Java  latest  08d3a9b8e166    2 weeks ago         5.733 GB`
    
  3. أخيرًا ، قم بإزالة الصورة باستخدام معرف الصورة (الأرقام الثلاثة الأولى مطلوبة فقط)

    docker rmi 08d
    
63
kweku360

صورة:

  1. قائمة الصور

    صور عامل ميناء

  2. إزالة صورة واحدة

    عامل ميناء rmi image_name

  3. فرض إزالة صورة واحدة [.

    عامل ميناء rmi -f image_name

حاوية:

  1. سرد جميع الحاويات

    عامل ميناء ps -a

  2. قم بإزالة حاوية واحدة.

    عامل ميناء rm container_id

  3. فرض إزالة حاوية واحدة [.

    عامل ميناء rm -f container_id

32
hackfox code

تحديث ، كما علق VonC في كيفية إزالة حاويات Docker القديمة.

مع Docker 1.13 (Q4 2016) ، أصبح لديك الآن:

docker system Pruneسيحذف جميع البيانات غير المستخدمة (على سبيل المثال ، من أجل: الحاويات متوقفة ، وحدات التخزين بدون حاويات وصور بدون حاويات).

انظر PR 26108 و الالتزام 86de7c0 ، والتي تقدم بعض الأوامر الجديدة للمساعدة في تسهيل تصور مقدار المساحة التي تشغلها بيانات البرنامج الخفي Docker على القرص والسماح بسهولة التنظيف الزائد "غير الضروري".

docker system Prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y
27
qkrijger

إزالة الحاويات

  1. لإزالة حاوية محددة

    docker rm CONTAINER_ID CONTAINER_ID
    
    • للحصول على صورة واحدة

      docker rm  70c0e19168cf
      
    • للحصول على صور متعددة

      docker rm  70c0e19168cf c2ce80b62174
      
  2. إزالة الحاويات الخارجة

    docker ps -a -f status=exited
    
  3. إزالة جميع الحاويات

    docker ps -q -a | xargs docker rm
    

إزالة الصور

docker rmi IMAGE_ID
  1. إزالة صور محددة

    • لصورة واحدة

      docker rmi ubuntu
      
    • لصور متعددة

      docker rmi ubuntu Alpine
      
  2. إزالة الصور المتدلية
    الصور المتدلية هي طبقات ليس لها أي علاقة بأي صور ذات علامات لأن صور Docker تتكون من صور متعددة.

    docker rmi -f $(docker images -f dangling=true -q)
    
  3. إزالة جميع الصور Docker

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

إزالة المجلدات

لسرد وحدات التخزين ، قم بتشغيل docker volume ls

  1. إزالة وحدة تخزين محددة

    docker volume rm VOLUME_NAME
    
  2. إزالة وحدات التخزين المتدلية

    docker volume rm $(docker volume ls -f dangling=true -q)
    
  3. إزالة الحاوية وأحجامها

    docker rm -v CONTAINER_NAME
    
20
All Іѕ Vаиітy

docker rm container_name

docker rmi image_name

docker help

rm قم بإزالة حاوية واحدة أو أكثر

rmi إزالة صورة واحدة أو أكثر

19
KunMing Xie
docker rmi  91c95931e552

استجابة خطأ من البرنامج الخفي: Conflict ، لا يمكن حذف 91c95931e552 لأن الحاوية 76068d66b290 تستخدمها ، استخدم -f لإجبار FATA [0000] خطأ: فشل في إزالة صورة واحدة أو أكثر

البحث عن معرف الحاوية ،

# docker ps -a

# docker rm  daf644660736 
13
lakshmikandan

بادئ ذي بدء ، يتعين علينا إيقاف وإزالة حاويات Docker المرفقة مع صورة Docker التي سنقوم بإزالتها.

لذلك لذلك ، أولا

  • docker stop container-id - لإيقاف تشغيل الحاوية
  • docker rm container-id - لحذف/إزالة الحاوية

ثم،

  • docker rmi image-id - لحذف/إزالة الصورة
4
Murali Manchadikkal

بالنسبة للإصدارات 1.13 والإصدارات الأحدث:

docker image rm [OPTIONS] IMAGE [IMAGE...]

مقارنة:

يبدو أن [OPTIONS] ليس له فرق.

--force , -f        Force removal of the image
--no-Prune          Do not delete untagged parents

من: تقديم عامل الميناء 1.13

إعادة هيكلة CLI

في Docker 1.13 ، قمنا بإعادة تجميع كل أمر ليجلس تحت كائن منطقي يتفاعل معه. على سبيل المثال ، يعد list و start من الحاويات الآن من الأوامر الفرعية لـ docker container و history هو أمر فرعي لـ docker image.

تتيح لنا هذه التغييرات تنظيف بناء جملة Docker CLI وتحسين نص المساعدة وجعل Docker أسهل في الاستخدام. لا يزال بناء جملة الأوامر القديم مدعومًا ، لكننا نشجع الجميع على تبني الجملة الجديدة .

2
tgogos

حذف كل منهم باستخدام

الخطوة 1: قتل جميع الحاويات

for i in `Sudo docker ps -a | awk '{ print $1 }'`; do Sudo docker kill $i ; done

الخطوة 2: RM لهم أولا

for i in `Sudo docker ps -a | awk '{ print $1 }'`; do Sudo docker rm $i ; done

الخطوة 3: حذف الصور باستخدام القوة

for i in `Sudo docker images | awk '{ print $3}'`; do  Sudo docker rmi --force $i ; done

استخدم الخطوة 1 في حالة ظهور رسالة خطأ تفيد بأنه لا يمكن حذفها بسبب تبعيات الأطفال

1
chandank

يوفر عامل الميناء بعض الأوامر لإزالة images.

إظهار/إزالة Images:

docker images
docker images -a # All images
docker images --no-trunc # List the full length image IDs

docker images --filter "dangling=true" // Show unstage images
docker rmi $(docker images -f "dangling=true" -q) # Remove on unstages images

docker rmi <REPOSITORY> or <Image ID> # Remove a single image

docker image Prune # Interactively remove dangling images
docker image Prune -a # Remove all images

or 

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

أيضًا ، يمكنك أيضًا استخدام معلمات filter لإزالة مجموعة من الصور في وقت واحد:

مثال:

$docker images --filter "before=<hello-world>" // It will all images before hello-world

$docker images --filter "since=<hello-world>" // It will all images since hello-world

بحيث يمكنك حذف فلتر الصور مثل هذا:

docker rmi $(docker images --filter "since=<hello-world>")
docker rmi $(docker images --filter "before=<hello-world>")
1
Mr Singh

في ما يلي نص برمجي من شركة شل لإزالة صورة ذات علامات تمييز وحاويات. حفظ باسم عامل ميناء - rmi وتشغيل باستخدام "عامل ميناء - صورة - اسم بلدي"

#!/bin/bash

IMAGE=$1

if [ "$IMAGE" == "" ] ; then
  echo "Missing image argument"
  exit 2
fi

docker ps -qa -f "ancestor=$IMAGE" | xargs docker rm
docker rmi $IMAGE
1
Alex M

إذا كنت ترغب في تنظيف الحاويات بشكل تلقائي/دوري وإزالة الصور والأحجام غير المستخدمة من قبل حاوية قيد التشغيل ، يمكنك تنزيل الصورة meltwater/docker-cleanup.

أنا أستخدم هذا في الإنتاج لأننا ننشر عدة مرات في اليوم على خوادم متعددة ، ولا أريد أن أذهب إلى كل خادم لتنظيفه (سيكون ذلك مؤلمًا).

مجرد تشغيل:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

سيتم تشغيله كل 30 دقيقة (أو مهما قمت بتعيينه باستخدام DELAY_TIME = 1800 خيار) وتنظيف الحاويات والصور الخارجة.

مزيد من التفاصيل: https://github.com/meltwater/docker-cleanup/blob/master/README.md

1
Innocent Anigbo