নামের উপর ভিত্তি করে ডকার চিত্রগুলি কীভাবে সরাবেন?


93

আমি ডক ইমেজের সমস্ত সংস্করণ নাম দিয়ে মুছে ফেলতে চাই যাতে প্রদত্ত স্ট্রিং ( imagename) থাকে।
আমি নীচে চেষ্টা করেছি, তবে এটি কার্যকর হবে বলে মনে হচ্ছে না:

docker images | grep 'imagename' | xargs -I {} docker rmi

উত্তর:


136

নিম্নলিখিত চেষ্টা করুন:

docker rmi $(docker images |grep 'imagename')

উইন্ডোজ পাওয়ারশেল:

docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")

17
ডকারের বর্তমান সংস্করণ এটি সমর্থন করে (কোনও গ্রেপ নয়): ডকার আরএমআই d (ডকারের চিত্র 'চিত্রের নাম')
চার্লি

ডকারের বর্তমান সংস্করণ এটি সমর্থন করে বলে মনে হচ্ছে - সম্ভবত আমি কিছু মিস করছি? - ডকার আরএমআই 'চিত্রের নাম'
চার্লি

10
@ চার্লি আমার মনে হয় বেশিরভাগ লোকেরা ' ইমেজনাম ' এর সাথে মিলে যায় এমন সমস্ত চিত্রের সাথে মেলে এমন একটি উপায় খুঁজছেন যা ঠিক 'চিত্রের নাম' নামক একক চিত্রের চেয়ে বেশি হয়।
আরজেফালকোনার

4
আমি এই নিম্নলিখিত ত্রুটিটি পাচ্ছি: "ডকার আরএমআই-তে কমপক্ষে 1 টি আর্গুমেন্ট প্রয়োজন।"
মিচালি

@ মিমালি এর অর্থ এই যে কোনও মিল পাওয়া যায় নি image docker images |grep 'imagename'
র্যাম্বালার

71

কিছুটা সঠিক সংস্করণ - কেবলমাত্র সংগ্রহস্থলের নামে গ্রেপ করা:

docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')

25
এটি কেবল সর্বশেষ হিসাবে ট্যাগ হওয়া চিত্রগুলি সরিয়ে দেয়docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
ড্রয়

ধন্যবাদ! এই আমি খুঁজছিলাম ছিল।
হার্ডিক

26
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')

4
আপনি কি ব্যাখ্যা করতে পারেন এটি কি করে? এলোমেলো কোডের বিটগুলি বিপজ্জনক হতে পারে।
কিলোজুলগুলি

6
docker images --format '{{.Repository}}:{{.Tag}}আউটপুট ফিল্টার করে তাই কেবল রেপো এবং ট্যাগ দেখানো হয় (যেমন foo:latest)। grep 'imagenameকেবল সেই চিত্রগুলিতে সেই লাইনগুলি ফিল্টার করে imagename। যেটিকে মেলে এমন চিত্রগুলি সরিয়ে দেয় $()এবং বাইরের দিকে যায় docker rmiযা মূল্যায়ন করে Put
অ্যাডাম পার্কিন

উপরের docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter=reference='imagename:*')'
দিকটি

4
উইন্ডোতে "গ্রেপ" উপস্থিত নেই (সেন্টিমিডি বা পাওয়ারশেল) নিম্নলিখিতটি বিধবাতে ব্যবহার করা যেতে পারেdocker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -Pattern 'imagename')
জমির ফুজান

20

docker imagesফিল্টার করার জন্য চিত্রের নাম হিসাবে আসলে প্রথম অবস্থানগত যুক্তি ব্যবহার করে uses কোনও গ্রেপ এবং অজকের প্রয়োজন নেই। -qবিকল্পটি কেবল খাপ খাওয়া যায় এমন মিলে যাওয়া চিত্রগুলির আইডিগুলি ফিরিয়ে দেবে docker rmi

docker rmi --force $(docker images -q 'imagename' | uniq)

uniqযদি আপনি আছে একই চিত্র ভিন্নভাবে বাঁধা সদৃশ সরানোর প্রয়োজন হয়।


এটি অবশ্যই আজ সেরা বিকল্প। ছবির নামটি উদ্ধৃতিতে হওয়া উচিত যদিও প্রশ্নের ধারাবাহিকতা বজায় রাখতে।
কলম্ব ভান্ডাল

8

--forceকমান্ডের শেষে আপনি যুক্ত করতে পারেন । পছন্দ:

sudo docker rmi <docker_image_id> --force

এটিকে আরও বুদ্ধিমান করে তুলতে আপনি চিত্রটি সরানোর আগে যে কোনও চলমান ধারক বন্ধ করতে পারেন:

sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force

ইন docker ps, $ 1 হ'ল 1 ম কলাম অর্থাত্ ডকার কনটেইনার আইডি এবং the 3 হ'ল তৃতীয় কলাম অর্থাৎ ডকার চিত্র আইডি


5

আমি আমার উত্তর আরও সহজ খুঁজে।

উদাহরণস্বরূপ, আপনার চিত্রের নাম python_image

তারপরে আপনার কোডটি হওয়া উচিত :

docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")

আশা করি এটা কাজে লাগবে.


আমরা কি ওয়াইল্ডকার্ড নামের উপর ভিত্তি করে একাধিক চিত্রের জন্য এটি করতে পারি?
পরিবর্তনশীল

3

আমি আরও একটি সংক্ষিপ্ত উত্তর পেয়েছি। একমাত্র পরিবর্তনটি ছিল অপ্রয়োজনীয় -I {}পতাকা সরানো ।

docker images | grep 'imagename' | xargs docker rmi


3
docker rmi `docker images | awk '$1 ~ /imageName/ {print $3}'`

এটি "ইমেজনাম" নামে সমস্ত চিত্র সরিয়ে ফেলবে। কিছু ক্ষেত্রে এটি একটি ত্রুটি দিতে পারে যেমন "চিত্র এক বা একাধিক ভাণ্ডারে রেফারেন্স করা হয়"। সেক্ষেত্রে ফোর্স ডিলিট ব্যবহার করুন।

docker rmi -f `docker images | awk '$1 ~ /imageName/ {print $3}'`

অন্য উপায় হতে পারে:

docker images | awk '{ OFS = ":" }$1 ~ /imageName/ {print $1,$2}'

3

কিছু কারণে আমি এখানে দেওয়া কোনও উত্তর ব্যবহার করতে সক্ষম হইনি। আমার জন্য কি কাজ করেছে তা এখানে।

docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi

awk '{print $3}'একটি গুরুত্বপূর্ণ অংশ। এটি তৃতীয় কলাম থেকে আইডি বের করে।


3

আমার জন্য কাজ করেছেন ( ডকার সংস্করণ 19.03.5 ):

docker rmi $(docker images 'imagename' -q)

" ডকার ইমেজগুলির 'চিত্র-নাম' -কিউ " কমান্ডটি একক উদ্ধৃত যুক্তির সমস্ত চিত্রের আইডি তালিকাভুক্ত করবে যাতে এটি ডকার আরএমআই (বা জোর করার জন্য ডকার আরএমআই -f ) দিয়ে যুক্ত করা হবে এটি নির্বাচিত নামের সাথে সমস্ত চিত্র সরিয়ে ফেলবে



0

গৌণ মন্তব্য: আমরা যা অনুভব করছি তা থেকে মনে হয় আপনি হলেন - যেহেতু ডকারের 18.03 - কেবল নামের উপর ভিত্তি করে অবিরুদ্ধ চিত্রগুলি আর সরাতে পারবেন না। আপনার হয় হয় উপরে বর্ণিত হিসাবে নাম + ট্যাগ ব্যবহার করতে হবে বা আইডি ব্যবহার করতে হবে।

docker images --format={{.ID}} | xargs -I % sh -c 'docker rmi --force % 2>&1'

0

docker rmi $(docker images --filter=reference="IMAGENAME:TAG")

উদাহরণস্বরূপ যদি আমার কাছে নিম্নলিখিত চিত্রগুলি থাকে

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
abcdefg/hij                   7.0.0-beta-4.0      3128835950cd        7 days ago          51.4MB
abcdefg/hij-action            7.0.0-beta-4.0      42a7255beb74        7 days ago          97.4MB
abcdefg/hij-test              7.0.0-beta-4.0      17246aed35d0        7 days ago          97.4MB
abcdefg/hij-server            7.0.0-beta-4.0      42c45e561f2c        7 days ago          335MB
abcdefg/hij-init              7.0.0-beta-3.0      f648bb622933        7 days ago          55.2MB
abcdefg/hij-dir               7.0.0-beta-3.0      0db07d3aaccf        7 days ago          97.4MB
abcdefg/hij-mount             7.0.0-beta-3.0      18d1c0e1502c        4 weeks ago         33.7MB

তারপরে docker rmi $(docker images --filter=reference="abcd*:*4.0")প্রথম চারটি চিত্র সরিয়ে ফেলবে।

আরও তথ্য দয়া করে https://docs.docker.com/engine/references/commandline/images/ দেখুন


কাজ করে তবে ডকার ইমেজ কমান্ডে ' docker rmi $(docker images -q --filter=reference="IMAGENAME:TAG")
-কিউ

0

আমার প্রয়োজন মেটাতে এই প্রশ্নের সমাধান একসাথে রাখুন, যা আগে পোস্ট করা হয়নি।

: আমি স্থানীয়ভাবে নির্মিত ইমেজ মেলে চেয়েছিলেন library/myappযে, আমি নতুন নামকরণ করে থাকেন বাঁধা, এবং একটি ব্যক্তিগত রেপো পুশ করা হয়েছে: myrepo.org/library/myapp। একবার তাদের ধাক্কা দেওয়ার পরে, আমি স্থানীয় ডকার রেজি পরিষ্কার করতে চাই।

এবং কিছুই খুঁজে পাওয়া যায় না বা কমান্ডটি ত্রুটি ছুঁড়েছে কিনা সে সম্পর্কে আমি চিন্তা করি না। || trueস্ক্রিপ্টগুলিতে অন্তর্ভুক্ত করার জন্য এইভাবে শেষে যুক্ত করা হয়েছে।

docker rmi $(docker image ls */library/myApp --format '{{.Repository}}:{{.Tag}}') || true

0

@ আদিত্যর উত্তরের ভিত্তিতে, আপনি স্বচ্ছন্দে চিত্রগুলি সরাতে ব্যাশ ফাংশনও তৈরি করতে পারেন। আপনার এই ফাংশন রাখুন ~/.profile। একটি নতুন শেল সেশন তৈরি করুন বা এটি দ্বারা উত্স করুন source ~/.profile

function drmi() {
    docker images | grep $1 |  xargs docker rmi
}

ব্যবহার:

drmi golang

0

তথ্যবহুল:

docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}" |grep imagename |grep none)

এই ত্রুটি দিন:

ডেমন থেকে ত্রুটির প্রতিক্রিয়া: অবৈধ রেফারেন্স ফর্ম্যাট

সম্ভবত কারণ আমার চিত্রগুলি দেখতে এই রকম:

hostname:5000/imagename:<none>

আমাকে চিত্র আইডি ব্যবহার করতে হয়েছিল এবং এই আদেশটিটি করতে হয়েছিল:

docker rmi `docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" |grep imagename |grep none |cut -d ' ' -f2`

নিষ্ক্রিয় পাত্রে অপসারণ করতে:

docker container rm `docker container ls -a --format "{{.ID}} {{.Image}} {{.Status}}" |grep Exited |grep imagename|cut -d ' ' -f1`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.