আমি ডক ইমেজের সমস্ত সংস্করণ নাম দিয়ে মুছে ফেলতে চাই যাতে প্রদত্ত স্ট্রিং ( imagename) থাকে।
আমি নীচে চেষ্টা করেছি, তবে এটি কার্যকর হবে বলে মনে হচ্ছে না:
docker images | grep 'imagename' | xargs -I {} docker rmi
আমি ডক ইমেজের সমস্ত সংস্করণ নাম দিয়ে মুছে ফেলতে চাই যাতে প্রদত্ত স্ট্রিং ( imagename) থাকে।
আমি নীচে চেষ্টা করেছি, তবে এটি কার্যকর হবে বলে মনে হচ্ছে না:
docker images | grep 'imagename' | xargs -I {} docker rmi
উত্তর:
নিম্নলিখিত চেষ্টা করুন:
docker rmi $(docker images |grep 'imagename')
উইন্ডোজ পাওয়ারশেল:
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")
docker images |grep 'imagename'
কিছুটা সঠিক সংস্করণ - কেবলমাত্র সংগ্রহস্থলের নামে গ্রেপ করা:
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker images --format '{{.Repository}}:{{.Tag}}আউটপুট ফিল্টার করে তাই কেবল রেপো এবং ট্যাগ দেখানো হয় (যেমন foo:latest)। grep 'imagenameকেবল সেই চিত্রগুলিতে সেই লাইনগুলি ফিল্টার করে imagename। যেটিকে মেলে এমন চিত্রগুলি সরিয়ে দেয় $()এবং বাইরের দিকে যায় docker rmiযা মূল্যায়ন করে Put
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter=reference='imagename:*')'
docker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -Pattern 'imagename')
docker imagesফিল্টার করার জন্য চিত্রের নাম হিসাবে আসলে প্রথম অবস্থানগত যুক্তি ব্যবহার করে uses কোনও গ্রেপ এবং অজকের প্রয়োজন নেই। -qবিকল্পটি কেবল খাপ খাওয়া যায় এমন মিলে যাওয়া চিত্রগুলির আইডিগুলি ফিরিয়ে দেবে docker rmi।
docker rmi --force $(docker images -q 'imagename' | uniq)
uniqযদি আপনি আছে একই চিত্র ভিন্নভাবে বাঁধা সদৃশ সরানোর প্রয়োজন হয়।
--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 হ'ল তৃতীয় কলাম অর্থাৎ ডকার চিত্র আইডি
আমি আমার উত্তর আরও সহজ খুঁজে।
উদাহরণস্বরূপ, আপনার চিত্রের নাম python_image।
তারপরে আপনার কোডটি হওয়া উচিত :
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
আশা করি এটা কাজে লাগবে.
আমি আরও একটি সংক্ষিপ্ত উত্তর পেয়েছি। একমাত্র পরিবর্তনটি ছিল অপ্রয়োজনীয় -I {}পতাকা সরানো ।
docker images | grep 'imagename' | xargs docker rmi
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}'
কিছু কারণে আমি এখানে দেওয়া কোনও উত্তর ব্যবহার করতে সক্ষম হইনি। আমার জন্য কি কাজ করেছে তা এখানে।
docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi
awk '{print $3}'একটি গুরুত্বপূর্ণ অংশ। এটি তৃতীয় কলাম থেকে আইডি বের করে।
আমার জন্য কাজ করেছেন ( ডকার সংস্করণ 19.03.5 ):
docker rmi $(docker images 'imagename' -q)
" ডকার ইমেজগুলির 'চিত্র-নাম' -কিউ " কমান্ডটি একক উদ্ধৃত যুক্তির সমস্ত চিত্রের আইডি তালিকাভুক্ত করবে যাতে এটি ডকার আরএমআই (বা জোর করার জন্য ডকার আরএমআই -f ) দিয়ে যুক্ত করা হবে এটি নির্বাচিত নামের সাথে সমস্ত চিত্র সরিয়ে ফেলবে
গৌণ মন্তব্য: আমরা যা অনুভব করছি তা থেকে মনে হয় আপনি হলেন - যেহেতু ডকারের 18.03 - কেবল নামের উপর ভিত্তি করে অবিরুদ্ধ চিত্রগুলি আর সরাতে পারবেন না। আপনার হয় হয় উপরে বর্ণিত হিসাবে নাম + ট্যাগ ব্যবহার করতে হবে বা আইডি ব্যবহার করতে হবে।
docker images --format={{.ID}} | xargs -I % sh -c 'docker rmi --force % 2>&1'
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")
আমার প্রয়োজন মেটাতে এই প্রশ্নের সমাধান একসাথে রাখুন, যা আগে পোস্ট করা হয়নি।
: আমি স্থানীয়ভাবে নির্মিত ইমেজ মেলে চেয়েছিলেন library/myappযে, আমি নতুন নামকরণ করে থাকেন বাঁধা, এবং একটি ব্যক্তিগত রেপো পুশ করা হয়েছে: myrepo.org/library/myapp। একবার তাদের ধাক্কা দেওয়ার পরে, আমি স্থানীয় ডকার রেজি পরিষ্কার করতে চাই।
এবং কিছুই খুঁজে পাওয়া যায় না বা কমান্ডটি ত্রুটি ছুঁড়েছে কিনা সে সম্পর্কে আমি চিন্তা করি না। || trueস্ক্রিপ্টগুলিতে অন্তর্ভুক্ত করার জন্য এইভাবে শেষে যুক্ত করা হয়েছে।
docker rmi $(docker image ls */library/myApp --format '{{.Repository}}:{{.Tag}}') || true
@ আদিত্যর উত্তরের ভিত্তিতে, আপনি স্বচ্ছন্দে চিত্রগুলি সরাতে ব্যাশ ফাংশনও তৈরি করতে পারেন। আপনার এই ফাংশন রাখুন ~/.profile। একটি নতুন শেল সেশন তৈরি করুন বা এটি দ্বারা উত্স করুন source ~/.profile।
function drmi() {
docker images | grep $1 | xargs docker rmi
}
ব্যবহার:
drmi golang
তথ্যবহুল:
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`