চিত্রের নাম দিয়ে ডকারের ধারকগুলি থামানো হচ্ছে - উবুন্টু


156

উবুন্টু ১৪.০৪-তে (ট্রাস্টি তাহর) আমি একটি চলমান ধারককে থামানোর জন্য একটি উপায় অনুসন্ধান করছি এবং আমার কাছে কেবলমাত্র তথ্যটি হ'ল ডকার রান কমান্ডে ব্যবহৃত চিত্রটির নাম is

সেই চিত্রের নামের সাথে মেলে এমন সমস্ত মিলে চলমান কন্টেইনারগুলি খুঁজে পেতে এবং তাদের বন্ধ করার জন্য কি কোনও আদেশ রয়েছে?

উত্তর:


210

8959 সংখ্যাটি অনুসরণ করে , একটি ভাল শুরু হবে:

docker ps -a -q --filter="name=<containerName>"

যেহেতু nameবোঝায় ধারক এবং ইমেজ নাম, আপনি আরো সাম্প্রতিক ব্যবহার করতে হবে Docker 1.9 ফিল্টার পূর্বপুরুষ , উল্লেখ koekiebox এর উত্তর

docker ps -a -q  --filter ancestor=<image-name>

কিরিল দ্বারা নীচে মন্তব্য করা হয়েছে , সেই ধারকগুলি সরাতে:

stop পাত্রে পাশাপাশি দেয়।

তাই শৃঙ্খলাবদ্ধ stopএবং rmকাজটি করবে:

docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))

এটা অসাধারণ. এর পরে আমার সমস্যাটি হ'ল পাতাগুলি অপসারণ করার পরে, যেহেতু সেগুলি স্টপ্পড হয়, তাই তারা ডকার পিডি দ্বারা ফিরে আসে না। কিভাবে এটির কোনও ক্লু?
কিরিল

@ কিরিল থামানো কনটেইনার দিয়ে ফিরে আসবে ps -a। পাত্রে সরানো হয়েছে ... ভাল সেগুলি সরানো হয়েছে, তাদের আর অস্তিত্ব নেই।
ভনসি

1
ধন্যবাদ, আমি বুঝতে পারি না স্টপগুলিও ধারকগুলি ফেরত দেয়। সুতরাং চেইনিং স্টপ এবং আরএম কাজটি করবে: ডকার আরএম $ (ডকার স্টপ $ (ডকার পিএস-এ -কিউ - ফিল্টার = "নাম = <চিত্র-নাম>"))
কিরিল

@ কিরিল এটাই ধারণা, হ্যাঁ।
ভনসি

63

পূর্ববর্তী উত্তরগুলি আমার পক্ষে কার্যকর হয়নি তবে এটি করেছে:

docker stop $(docker ps -q --filter ancestor=<image-name> )

1
সেখানে পূর্বপুরুষদের আকর্ষণীয় ব্যবহার ( ডকস.ডকার / এঞ্জিন / রেফারেন্স / কম্যান্ডলাইন / পিএস / # ফিল্টারিং )। +1
ভনসি

1
উইন্ডোজের জন্য ডকার টার্মিনালেও কাজ করে।
কোইকিবক্স

44

আপনি ধারকটির নাম নির্ধারণকারী ধারকটি শুরু করতে পারেন:

docker run -d --name <container-name> <image-name>

একই চিত্রটি একাধিক পাত্রে স্পিন করতে ব্যবহৃত হতে পারে, সুতরাং এটি একটি ধারক শুরু করার ভাল উপায়। তারপরে আপনি এই ধারকটির নামটি থামাতে, সংযুক্ত করতে ... ধারকটি ব্যবহার করতে পারেন:

docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>

আমি এই সমাধানটি সত্যিই পছন্দ করি। এর থেকেও একটি ধারক চালানো, থামানো / অপসারণ এবং তারপরে আরও ভাল কোনও উপায় থাকতে পারে? sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
মেলানকে

16

এই কোডটি ইমেজ সেন্টোস সহ সমস্ত পাত্রে বন্ধ করবে : 6 । আমি এর পক্ষে এর চেয়ে সহজ সমাধান খুঁজে পাইনি।

docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop

বা আরও ছোট:

docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')

1
উন্নতির প্রয়োজন :::: ডকার স্টপ $ (ডকার পিএস -a | গ্রেপ সেন্টোস: 6 | অ্যাজক '{প্রিন্ট করুন $ 1}')
শৈলেশ কুমার

@ শৈলেশকুমার আপনার সংস্করণ যুক্ত করেছেন =)
আর্গোনকিউ

9

ধারক চালানো বন্ধ করার দুটি উপায়:

1. $docker stop container_ID

2. $docker kill container_ID

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে চলমান পাত্রে পেতে পারেন:

$docker ps

আরও তথ্যের জন্য নিম্নলিখিত লিঙ্কগুলি:


শেষ লিঙ্কটি নষ্ট হয়ে গেছে ( "দুঃখিত, আমরা সেই পৃষ্ঠাটি খুঁজে পাই না" )।
পিটার মর্টেনসেন

এটি কি আক্ষরিক $docker? নাকি $শেল প্রম্পট থেকে এসেছে?
পিটার মর্টেনসেন

2

18.09.0 ডকার সংস্করণের জন্য আমি খুঁজে পেয়েছি যে ফর্ম্যাট ফ্ল্যাগের প্রয়োজন হবে না

docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))

2

চিত্রের নাম অনুসারে ডকার ধারক বন্ধ করুন:

imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')

চিত্রের নাম এবং ট্যাগ দ্বারা ডকার ধারক বন্ধ করুন:

imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')

আপনি যদি চিত্রটি তৈরি করেন তবে আপনি এটিতে একটি লেবেল যুক্ত করতে এবং লেবেল দ্বারা চলমান পাত্রে ফিল্টার করতে পারেন

docker ps -q --filter "label=image=$image"

অবিশ্বাস্য পদ্ধতি

docker ps -a -q  --filter ancestor=<image-name>

সবসময় কাজ করে না

docker ps -a -q --filter="name=<containerName>"

ধারক নাম দ্বারা ফিল্টার, না ইমেজ নাম

docker ps | grep <image-name> | awk '{print $1}'

সমস্যাযুক্ত যেহেতু চিত্রের নামটি অন্যান্য চিত্রগুলির জন্য অন্যান্য কলামে উপস্থিত হতে পারে


1

আমি এটি তৈরি করেছিলাম যা /usr/local/bin/docker.stopচিত্রটির নাম নেয় (ধরে নেওয়া হয় যে আপনার কেবলমাত্র একটি চলমান আছে)।

docker stop $(docker ps -q -f "name=$1")

1

আমি আমার ডকার কমান্ড গুলপ কার্যগুলিতে মোড়ানোর চেষ্টা করছিলাম এবং বুঝতে পেরেছিলাম যে আপনি নিম্নলিখিতগুলি করতে পারেন:

docker stop container-name
docker rm container-name

এটি আপনার একই নামের একাধিক পাত্রে থাকতে পারে এমন পরিস্থিতিতেগুলির জন্য কাজ করতে পারে না (যদি এটি সম্ভব হয়) তবে আমার ব্যবহারের ক্ষেত্রে এটি সঠিক ছিল।


1

আমার ক্ষেত্রে --filter ancestor=<image-name>কাজ করা হয়নি, সুতরাং নিম্নলিখিত কমান্ডটি আমার জন্য ডকারের ধারক পরিষ্কার করেছে:

docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))


1

@ ভনসি চমত্কার উত্তরের উপরে যুক্ত করা, এখানে একটি জেডএসএইচ ফাংশন যা আপনি আপনার .zshrc ফাইলটিতে যুক্ত করতে পারেন:

dockstop() {
  docker rm $(docker stop $(docker ps -a -q --filter ancestor="$1" --format="{{.ID}}"))
}

তারপরে আপনার কমান্ড লাইনে, কেবল করুন dockstop myImageNameএবং এটি আমার আইজেনাম নামক চিত্র থেকে শুরু হওয়া সমস্ত পাত্রে বন্ধ হয়ে যাবে এবং সরিয়ে ফেলবে।



0

ব্যবহার: ডকার ধারক স্টপ $ (ডকারের ধারক ls -q - ফিল্টার পূর্বপুরুষ = মঙ্গো)

    (base) :~ user$ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
    d394144acf3a        mongo               "docker-entrypoint.s…"   15 seconds ago      Up 14 seconds       0.0.0.0:27017->27017/tcp   magical_nobel
    (base) :~ user$ docker container stop $(docker container ls -q --filter ancestor=mongo)
    d394144acf3a
    (base) :~ user$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    (base) :~ user$

0

আপনি যদি কোনও সহজ AWKপদ্ধতির পছন্দ করতে চান তবে আমার গ্রহণ করুন:

docker rm -f $(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')

$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}') - ইনপুট চিত্রের উপর ভিত্তি করে ডকারের ধারক নামগুলি মুদ্রণ করে

docker ps - সমস্ত পাত্রে তালিকা

awk '{ if($2 == "<your-image-name>") { print $NF}}'- দ্বিতীয় পার্স করা কলামটি docker psচিত্রটির নাম দেয়। আপনার চিত্রের নামের সাথে এটির তুলনা করা কার্যকর হবে print $NFযা ধারকটির নাম মুদ্রণ করে।

docker rm -f পাত্রে সরিয়ে দেয়

উদাহরণস্বরূপ, উবুন্টু চিত্রের সমস্ত চলমান পাত্রে অপসারণ করা সহজভাবে এইভাবে করা যেতে পারে:

docker rm -f $(docker ps | awk '{ if($2 == "ubuntu:latest") { print $NF}}')

পিএস: এডব্লিউকেতে চিত্র ট্যাগটি অন্তর্ভুক্ত করার বিষয়টি মনে রাখবেন, যেহেতু এটি একটি সমান তুলনামূলক।


-5

psচলমান পাত্রে একবার দেখে কমান্ডটি ব্যবহার করতে পারেন :

docker ps -a

সেখান থেকে আপনার সন্ধানের ধারক আইডি সহ আপনার ধারকটির নামও দেখতে হবে। এখানে আরও তথ্যdocker ps


লিঙ্কটি নষ্ট হয়ে গেছে ( দুঃখিত, আমরা সেই পৃষ্ঠাটি খুঁজে পাই না )।
পিটার মর্টেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.