ডকার রান -> 'নামটি ইতিমধ্যে ধারক দ্বারা ব্যবহৃত'


387

dockerনীচের কমান্ড দিয়ে রেজিস্ট্রি চালানো সর্বদা একটি ত্রুটি ছুড়ে দেয়:

dev:tmp me$ docker run \
     -d --name registry-v1 \
     -e SETTINGS_FLAVOR=local \
     -e STORAGE_PATH=/registry \
     -e SEARCH_BACKEND=sqlalchemy \
     -e LOGLEVEL=DEBUG \
     -p 5000:5000 \
     registry:0.9.1
Error response from daemon: Conflict. The name "registry-v1" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name.

কীভাবে এই ত্রুটি রোধ করবেন?

উত্তর:


427

আমি এটি দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম। এখানে দুটি কমান্ড প্রাসঙ্গিক রয়েছে:

Docker রান একটি মধ্যে একটি কমান্ড সঞ্চালন করুন নতুন ধারক

ডকার স্টার্ট এক বা একাধিক থামানো পাত্রে শুরু করুন


8
ডকার কনটেইনারটি আবার চালানোর জন্য আমি এই উত্তরটি খুঁজছিলাম। ধন্যবাদ!
ইস্পির

105
সুতরাং docker ps -aএই ক্ষেত্রে সমস্ত পাত্রে দেখতে ব্যবহার করাও গুরুত্বপূর্ণ ।
সাওসস

9
হ্যাঁ, docker start -a container-nameআপনি যে কন্টেনারটি তৈরি করেছেন তার দ্বারা শুরু করার জন্য ব্যবহার করতে পারেন docker run-aশর্টহ্যান্ডের জন্য পতাকাটি নোট করুন --attach। আপনি যখন ব্যবহার করবেন ঠিক ঠিক তেমনভাবে docker run( যেমনটি পূর্বনির্ধারিতভাবে কোনও ধারক চালায়) এইভাবে কনটেইনারটি অগ্রভাগে শুরু হয়েছিল।
ক্রিজিস্তফফ ওওভস্কি

1
@ সানকাচার হ্যাঁ
0x7d7b

1
@ eMPee584 না, কারণ docker create একটি ধারক তৈরি করে তবে তা চালায় না।
0x7d7b

182

এর অর্থ আপনি ইতিমধ্যে প্যারামিটার দিয়ে একটি ধারক শুরু করেছেন docker run --name registry-v1 ...

আপনি একই নামটি দিয়ে একটি ধারকটি পুনরায় তৈরি করার আগে আপনাকে প্রথমে এটি মুছতে হবে docker rm registry-v1। যখন সেই ধারকটি চালিত হয় আপনি প্রথমে এটিটি মুছে ফেলার আগে আপনাকে এটি বন্ধ করে দেওয়া উচিত docker stop registry-v1। অথবা কেবল নতুন ধারকটির জন্য আলাদা নাম চয়ন করুন।

বিদ্যমান পাত্রে এবং তাদের নামগুলির একটি তালিকা পেতে সহজভাবে প্রার্থনা করুন docker ps -a


4
তবে কেন এগুলি বন্ধ করা হয়? বা বন্ধ থাকলে তারা এখনও সেখানে থাকলে ভাল কি?
এমএসকেডাব্লু

2
সুতরাং আপনি তাদের পুনরায় তৈরি না করে পরে চালাতে পারেন
স্কট স্টেনসল্যান্ড

2
সুতরাং আপনি মূলত বলছেন "যাতে আপনি একবারে চিত্রটি চালাবেন (অর্থাত্ পাত্রে উত্পাদন করে তারপরে এটি কমান্ডটি চালান), তারপরে আপনার ইচ্ছামতো কন্টেইনারটি শুরু করুন"। তবে কেন আমাদের একবারে কিছু চালাতে হবে? এমনকি ধারকটিতে "কিছু" তৈরি হওয়া সম্ভাব্য পরিবর্তনগুলি অবিচল রেখেও (মনে রাখবেন, ডকারের ধারক স্থিতির পরিবর্তনগুলি প্রতিশ্রুতি না দিলে হারিয়ে যায়)।
মাকসিম গুমেরভ

14
আপনি যদি নিজের docker rm $(docker ps -aq --filter name=myContainerName)
ধারকটির

2
@ যুঝারসিংহ কেন শুধু নয় docker rm myContainerName?
রডরিগো

151

এখানে আমি যা করেছি, এটি কাজ করে works

পদক্ষেপ 1: (এটি এর নাম সহ ডকারের ধারক তালিকাভুক্ত করে)

docker ps -a

ধাপ ২:

docker rm name_of_the_docker_container

4
এটি আমার পক্ষে সহায়ক ছিল, "ডকার পিএস" অবিশ্বাস্যভাবে কিছু ফেরত দেওয়ার জন্য -এ পতাকা লাগবে।
মাইকেলচান

ডকার পিএস কেবল চলমান পাত্রে এবং প্রয়োজনীয়গুলি সরবরাহ করে - এমনকি বন্ধ হওয়াগুলির তালিকা তৈরির জন্য।
সুরেন্দ্র প্রতাপ

57

অন্যেরা কী বলছেন তা বোঝানোর জন্য (এটি বুঝতে আমার কিছুটা সময় লেগেছিল) এটি হ'ল, যখন আপনি এই ত্রুটিটি দেখেন, তার অর্থ আপনার ইতিমধ্যে একটি ধারক রয়েছে এবং আপনাকে যা করতে হবে তা চালানো হয়। স্বজ্ঞাতভাবে docker runএটি চালানোর কথা থাকলেও তা হয় না। কমান্ড docker runশুধুমাত্র ব্যবহার করা হয় START খুব প্রথমবারের একটি ধারক। একটি বিদ্যমান ধারক চালানোর জন্য আপনার যা প্রয়োজন docker start $container-name। বিকাশকারীদের অর্থপূর্ণ / স্বজ্ঞাত কমান্ড তৈরি করতে বলার জন্য এত বেশি।


32

এটি ঠিক করার জন্য আপনার কাছে 2 টি বিকল্প রয়েছে ...

  1. কমান্ডটি সহ সেই নামটি ব্যবহার করে পূর্ববর্তী পাত্রে সরিয়ে ফেলুন docker rm $(docker ps -aq --filter name=myContainerName)

    অথবা

  2. বর্তমান ধারকটির নাম আলাদা আলাদা করে রাখুন অর্থাত্ এই অংশটি পরিবর্তন করুন --name registry-v1something --name myAnotherContainerName

আপনি এই ত্রুটিটি পাচ্ছেন কারণ সেই ধারকটির নাম (অর্থাত্ registry-v1) অতীতে অন্য কোনও ধারক ব্যবহার করেছিলেন ... যদিও ধারকটি বেরিয়ে এসেছিল অর্থাত্ (বর্তমানে ব্যবহৃত হয় না)।


30

আপনি যখন একটি নতুন চিত্র তৈরি করছেন আপনি প্রায়শই প্রতিটি সময় এবং একই নামে একটি নতুন ধারক চালাতে চান। আমি খুঁজে পেলাম সবচেয়ে সহজ উপায় --rm বিকল্প দিয়ে ধারকটি শুরু করা :

--rm        Automatically remove the container when it exits

যেমন

docker run --name my-micro-service --rm <image>

দুঃখের সাথে ডকস থেকে প্রাপ্ত উদাহরণগুলিতে এটি প্রায় এলোমেলোভাবে ব্যবহৃত হয়েছে


ছবি বা ধারক?
পিম হিজডেন

1
ধারকগুলি নির্মিত ছবিগুলি থেকে চালিত হয়। ক্লাস সংজ্ঞা (চিত্র) এবং শ্রেণীর উদাহরণ (ধারক) এর সাথে মোটামুটি মিল।
মার্টিন

প্রথমে আপনি ধারক বলুন, তারপরে চিত্র। এটা অস্পষ্ট। তদুপরি, যদি সেই চিত্রটির জন্য কোনও ধারক ইতিমধ্যে চালু থাকে তবে এটি ব্যবহারের পরে চলতে থাকবে --rm। এটি আরম্ভ হয় না।
পিম হিজডেন

4
কেবলমাত্র একটি নোট: --rmআপনি --rmপতাকা ব্যবহার করে ধারক তৈরি করে থাকলে কেবলমাত্র কাজ করে । এর অর্থ, আপনি যদি --rmপতাকাটি ছাড়াই ধারকটি তৈরি করেন তবে পতাকাটির সুবিধা নেওয়ার আগে আপনাকে নিজেই এটি সরিয়ে ফেলতে হবে rm
Lepe

18

কারণ

একই নামের একটি ধারক এখনও বিদ্যমান।

সমাধান

একই ধারক নামটি পুনরায় ব্যবহার করতে, বিদ্যমান পাত্রে এটি মুছুন:

docker rm <container name>

ব্যাখ্যা

নিম্নলিখিত পাত্রে ধারকগুলির উপস্থিতি থাকতে পারে, সেই সময়ের মধ্যে ধারকটির নাম অন্য ধারক হিসাবে ব্যবহার করা যায় না:

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

আপনি runningরাষ্ট্র ব্যবহার করে পাত্রে দেখতে পারেন :

docker ps

সমস্ত রাজ্যে ধারক দেখানোর জন্য এবং কোনও ধারকের নাম নেওয়া হয়েছে কিনা তা জানতে, ব্যবহার করুন:

docker ps -a

যদি কেউ ধারকটি পুনরায় ব্যবহার করতে চায় তবে --rm উপযুক্ত সুইচ নয়। একটি সাধারণ "ডকার শুরু {ধারকের নাম}" যথেষ্ট।
কেন ইঙ্গ্রাম

11

এখানে আমি উবুন্টু 18 এ এটি কীভাবে সমাধান করেছি:

  1. $ sudo docker ps -a
  2. ধারক আইডি অনুলিপি করুন

প্রতিটি ধারক জন্য:

  1. $ sudo docker stop container_ID
  2. $ sudo docker rm container_ID

10

আপনি এটি কমান্ড দিয়ে মুছে ফেলতে পারেন sudo docker rm YOUR_CONTAINER_ID, তারপরে একটি নতুন ধারকটি চালাবেন sudo docker run ...; অথবা সাথে একটি বিদ্যমান ধারক পুনরায় আরম্ভ করুনsudo docker start YOUR_CONTAINER_ID


7

আমি নিম্নলিখিত পদক্ষেপগুলি দ্বারা সমস্যাটি সমাধান করেছি এবং আমি আশা করি এটি সহায়তা করবে।

  1. docker ps -aআপনার সিস্টেমে সমস্ত ধারক তালিকা করতে টাইপ করুন ।
  2. আপনি নিজের ডকারের ধারকটি যেখানে শুরু করেছেন সেখানে NAMES অংশটি পরীক্ষা করুন।
  3. তারপরে টাইপ করুন docker rm --force name_of_container
  4. আপনার ইচ্ছামতো ডকার ধারক ইনস্টল করুন।

NIFI ব্যবহার করতে আমার সমস্যা হয়েছে এবং আমি ডকার ব্যবহার করে সরিয়ে এবং পুনরায় ইনস্টল করেছি। শুভকামনা।


4

আমি শুধু ডকার শিখছি এবং এটি আমাকেও পেয়েছে। আমি ইতিমধ্যে সেই নামটির সাথে ধারকটি থামিয়েছি এবং তাই আমি ভেবেছিলাম যে এই নামটি সহ আমি একটি নতুন ধারক চালাতে পারি।

ক্ষেত্র না. কেবল ধারকটি বন্ধ হয়ে যাওয়ার অর্থ এই নয় যে এটি আবার শুরু করা যাবে না এবং এটি (নাম সহ) দিয়ে তৈরি করা সমস্ত পরামিতি রাখে।

যখন আমি দৌড়েছি docker ps -a তখন যখন আমি চারপাশে খেলছিলাম তখন আমি তৈরি সমস্ত ডামি পরীক্ষার পাত্রে দেখেছি।

সমস্যা নেই, যেহেতু আমি এগুলি আর চাই না আমি ঠিক docker rm containernameতখনই করেছি যা আমার নতুন ধারকটিকে পুরানো নাম দিয়ে চালানোর অনুমতি দেওয়া হয়েছিল।

আহ, এবং এখন আমি এই উত্তরটি লেখার কাজ শেষ করেছি, আমি ওয়াল্ট হাওয়ার্ডের উত্তরের উপরে স্লাওউসের মন্তব্য দেখতে ব্যবহারের পরামর্শ দিচ্ছি docker ps -a

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.