ডকার - ধারক চলছে না


92

আমি ডকারে সম্পূর্ণ নবাগত। আমি নীচের মতো একটি বহিরাগত ধারক শুরু করার চেষ্টা করেছি,

  1. আমি সমস্ত উপলব্ধ পাত্রে ব্যবহার করে তালিকাভুক্ত করেছি docker ps -a। এটি নিম্নলিখিত তালিকাভুক্ত:

    ডকার সমস্ত চিত্র তালিকা

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

    docker start 79b3fa70b51d
    docker exec -it 79b3fa70b51d /bin/sh
    
  3. এটি নিম্নলিখিত ত্রুটি নিক্ষেপ করছে।

    FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running

কিন্তু যখন আমি ধারকটি ব্যবহার শুরু করি docker start 79b3fa70b51d। এটি আউটপুট হিসাবে ধারক আইডি ছুঁড়ে দেয় যা যদি স্বাভাবিকভাবে সবকিছু কাজ করে থাকে তবে এটি স্বাভাবিক। আমি নিশ্চিত নই কি কারণে এই ত্রুটি ঘটেছে। এ সম্পর্কে কারণ এবং পরামর্শ সম্পর্কে যে কোনও ধারণা আমার পক্ষে যথেষ্ট সহায়ক হবে। আগাম ধন্যবাদ.


7
হাই, আপনি কীভাবে এই সমস্যাটি সমাধান করেছেন তা দয়া করে ব্যাখ্যা করতে পারেন। আমি ভীত, নীচের উত্তরটি খুব একটা অর্থবহ করে না
জয়পেক্স

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

উত্তর:


31

পাত্রে 79b3fa70b51dকেবল একটি করা আছে বলে মনে হচ্ছে echo

এর অর্থ এটি শুরু হয়, প্রতিধ্বনিত হয় এবং তারপরে তাত্ক্ষণিকভাবে প্রস্থান করে।

পরবর্তী docker execকমান্ডটি নিজেকে সেই ধারকটির সাথে সংযুক্ত করতে এবং কোনও কমান্ড কার্যকর করার জন্য এটি চলমান খুঁজে পাবে না: অনেক দেরি হয়ে গেছে। ধারক ইতিমধ্যে প্রস্থান করা হয়েছে।

docker execকমান্ড একটি চলমান কন্টেইনারে একটি নতুন কমান্ড রান।

ব্যবহার শুরু করা কমান্ডটি কেবল docker execতখনই চালিত হবে যখন কনটেইনারটির প্রাথমিক প্রক্রিয়া (পিআইডি 1) চলমান


4
আরে ভনসি, আপনার মন্তব্যের জন্য ধন্যবাদ। আমি ইমেজটির টার্মিনালে যেতে কীভাবে অর্জন করতে পারি?
অপরিচিত

4
@ উদয়কুমার docker run -it --rm udhayakumar/busyboxwithtouchএকটি সেশন খোলার জন্য একটি সরল যথেষ্ট হওয়া উচিত। ডিফল্ট এন্ট্রিপয়েন্টটি / বিন / শ হওয়া উচিত, তবে এটি আপনার ডকফিলের উপর নির্ভর করে: আপনি কোনও আলাদা এন্ট্রিপয়েন্ট এবং / অথবা কোনও আলাদা সিএমডি সংজ্ঞায়িত করতে পারেন।
ভনসি

51
হাই, আপনি কীভাবে এই সমস্যাটিকে সমাধান করেছেন তা দয়া করে ব্যাখ্যা করতে পারেন। আমি ভয় করছি যে এই উত্তরটি প্রচুর পরিমাণে বোঝায় না
জয়পেক্স

4
@ জাওয়াদ কোনও প্যারামিটার ছাড়াই ব্যস্তবক্সউইচটিচ চালিয়ে এটি ইন্টারেক্টিভ শেলের সাথে ডিফল্ট হয়ে যায় (যা অবিলম্বে প্রস্থান করে না)। এর অর্থ আপনি পরে করতে পারেন (docker exec সংযুক্ত করতে পারেন।
ভনসি

62

ডিফল্টরূপে, আপনার যদি ধারকটিতে কোনও কাজ না চালানো হয় তবে ডকারের ধারকটি সঙ্গে সঙ্গে প্রস্থান করবে।

পাত্রটিকে পটভূমিতে চলতে রাখতে, --detach(বা -d) যুক্তি দিয়ে এটি চালানোর চেষ্টা করুন ।

উদাহরন স্বরূপ:

docker pull debian

docker run -t -d --name my_debian debian
e7672d54b0c2

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e7672d54b0c2        debian              "bash"              3 minutes ago       Up 3 minutes                            my_debian

#now you can execute command on the container
docker exec -it my_debian bash
root@e7672d54b0c2:/# 

উত্তরটি হওয়া উচিত, দুর্দান্ত।
আমার

22

যদি মূল প্রক্রিয়াটি আবার শুরু করা সম্ভব না হয় (যথেষ্ট সময়ের জন্য) তবে ধারকটির commitনতুন চিত্রে যাওয়ার সম্ভাবনাও রয়েছে এবং এই চিত্র থেকে একটি নতুন ধারক চালানোও সম্ভব। যদিও এটি যথারীতি সেরা অনুশীলনের কর্মপ্রবাহ নয় , তবে আমি একবারে ব্যর্থ স্ক্রিপ্টটি ডিবাগ করা সত্যিই দরকারী বলে মনে করি।

docker exec -it 6198ef53d943 bash
Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running

docker commit 6198ef53d943
sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33

docker run -it ace7ca65e6e bash
root@72d38a8c787d:/#

আমি একই পদক্ষেপটি অনুসরণ করেছি তবে নতুনভাবে তৈরি কন্টেইনারটি ব্রাউজার থেকে অ্যাক্সেসযোগ্য নয় যা আগে অ্যাক্সেসযোগ্য ছিল
মুহাম্মদ মুয়াজ্জাম

4
দয়া করে নোট করুন যে কমান্ডটি ধারকটিতে একটি bashপ্রক্রিয়া শুরু করে। আপনার সম্ভবত সম্ভবত একটি ওয়েবসভার চালু ছিল তাই আপনাকে সার্ভারটি ফিরিয়ে আনতে কোন কমান্ডটি ব্যবহার করতে হবে তা পরীক্ষা করে দেখতে হবে।
ম্যাথিয়াস কুহন

10

প্রথমত, আমাদের ডকার পাত্রে শুরু করতে হবে

ankit@ankit-HP-Notebook:~$  sudo docker start 3a19b39ea021

                        3a19b39ea021

এর পরে, ডকারের ধারকটি পরীক্ষা করুন:

ankit@ankit-HP-Notebook:~$  sudo docker ps -a

 CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                   PORTS               NAMES

  3a19b39ea021        coreapps/ubuntu16.04:latest   "bash"              13 hours ago        
  Up 9 seconds                                 ubuntu1

  455b66057060        hello-world                   "/hello"            4 weeks ago         

Exited (0) 4 weeks ago                       vigorous_bardeen

তারপরে নীচের কমান্ডটি ব্যবহার করে নির্বাহ করুন:

ankit@ankit-HP-Notebook:~$  sudo docker exec -it 3a19b39ea021 bash

root@3a19b39ea021:/# 

আপনার উত্তরটি ব্যাখ্যা করতে এমন পাঠ্য যুক্ত করা সহায়ক হবে।
লরেন ভ্যান স্লাউন

9

এটি এমন চিত্রগুলির সাথে ঘটে যার জন্য স্ক্রিপ্ট অনুরোধের অপেক্ষায় একটি পরিষেবা চালু করে না , তাই স্ক্রিনটির শেষে কন্টেইনারটি প্রস্থান করে।

এটি বেশিরভাগ বেস ওএস ইমেজগুলির (সেন্টোস, ডেবিয়ান ইত্যাদি) ক্ষেত্রে নোড চিত্রগুলির ক্ষেত্রে সাধারণত হয় ।

আপনার সেরা বেটটি ইন্টারেক্টিভ মোডে চিত্রটি চালানো । নোড চিত্র সহ নীচের উদাহরণ :

docker run -it node /bin/bash

আউটপুট হয়

root@cacc7897a20c:/# echo $SHELL
/bin/bash

5

আমার জন্য যা কাজ করেছে তা এখানে।

ধারক আইডি পান এবং পুনরায় চালু করুন।

docker ps -a --no-trunc 

ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33


docker restart ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33


3

গ্রহণযোগ্য উত্তরটি কেবল কারণটি বলেছে। আমি কিছু অতিরিক্ত তথ্য যুক্ত করছি, যা এই সমস্যাটি সম্পর্কে আরও বোঝার সরবরাহ করতে পারে।

  1. একটি ধারক মর্যাদা রয়েছে Created, Running, Stopped, Exited, Deadএবং অন্যদের আমি জানি।
  2. যখন আমরা কার্যকর করি docker create, ডকার ডিমন তার স্থিতি সহ একটি ধারক তৈরি করবে Created
  3. কখন docker start, ডকার ডিমন একটি বিদ্যমান ধারক শুরু করবে যা এর স্ট্যাটাসটি হতে পারে Createdবা Stopped
  4. যখন আমরা কার্যকর করি docker run, ডকার ডিমন এটি দুটি ধাপে শেষ করবে: docker createএবং docker start
  5. কখন docker stop, স্পষ্টতই ডকার ডিমন একটি ধারক থামিয়ে দেবে। সুতরাং ধারক ভিতরে হবেStopped স্থিতি হবে।
  6. সর্বাধিক গুরুত্বপূর্ণটি আসার সাথে সাথে, একটি ধারক আসলে নিজেকে এটি একটি দীর্ঘ সময়ের প্রক্রিয়া ধরে রাখার কল্পনা করে। প্রক্রিয়াটি প্রস্থান করার সময়, ধারক হোল্ডিং প্রক্রিয়াটি খুব প্রস্থান করবে। সুতরাং এই ধারক অবস্থা হবে Exited

প্রক্রিয়াটি কখন প্রস্থান হয়? অন্য কথায়, প্রক্রিয়াটি কী, আমরা কীভাবে এটি শুরু করেছি?
উত্তরটি CMDকোনও ডকফেরফিল বা commandনিম্নোক্ত অভিব্যক্তিতে, যা bashকিছু চিত্রের মধ্যে ডিফল্টরূপে হয়, যেমন উবুতু: 18.04।

docker run ubuntu:18.04 [command]


2

ডকফাইফাইল ব্যবহার করে যে কেউ অনুরূপ কিছু চেষ্টা করছে ...

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

এক্ষেত্রে একটি কার্যনির্বাহী কাজটি হবে: ১. ফলাফল প্রাপ্ত চিত্রটির প্রতিশ্রুতিবদ্ধ করুন: (ধারক_নাম = আপনি যে ধারকটির চিত্রটি বন্ধ রাখতে চান তার নাম, চিত্র_নাম = চিত্র তৈরি করার জন্য নাম ডকার কমিট কনটেইনার_নামা_সাম_নাম ২. ব্যবহার করুন আপনি যে কমান্ডটি চালাতে চান তা উল্লেখ করে নতুন চিত্র ব্যবহার করে একটি নতুন ধারক তৈরি করতে ডকার রান করুন, এখানে, আমি "বাশ" চালাব: ডকার রান -ইট ইমেজ_নাম ব্যাশ

এটি আপনাকে যে ইন্টারেক্টিভ লগিনটি সন্ধান করছেন তা পেতে পারে।


1

ডকারের ধারক যখন স্বাভাবিকভাবে প্রস্থান করে এবং আপনি ডকফাইফিল সম্পাদনা করতে পারেন তার সমাধান এখানে Here

সাধারণত, যখন ডকারের ধারক চালানো হয়, একটি অ্যাপ্লিকেশন একটি কমান্ড চালিয়ে পরিবেশন করা হয়। থেকে Dockerfile রেফারেন্স ,

সিএমডি এবং ENTRYPOINT উভয় নির্দেশাবলী কনটেইনারটি চালানোর সময় কোন আদেশটি কার্যকর করা হয় তা নির্ধারণ করে। ... ডকফাইফিলের কমপক্ষে একটি সিএমডি বা ENTRYPOINT কমান্ড নির্দিষ্ট করা উচিত।

আপনি যখন কোনও চিত্র তৈরি করেন এবং সিএমডি বা ENTRYPOINT সহ কোনও কমান্ড নির্দিষ্ট না করে, তখন বেস ইমেজের সিএমডি বা ENTRYPOINT কমান্ড কার্যকর করা হবে।

উদাহরণস্বরূপ, অফিশিয়াল উবুন্টু ডকফাইফাইল CMD ["/bin/bash"]( https://hub.docker.com/_/ubuntu ) রয়েছে। এখন, bin/bash/কমান্ডটি ইনপুট গ্রহণ করতে পারে এবং docker run -it IMAGE_IDকমান্ডটি ধারকটিতে STDIN সংযুক্ত করে। ফলাফলটি হ'ল আপনি একটি ইন্টারেক্টিভ টার্মিনাল পান এবং ধারকটি চলতে থাকে।

ডকফাইফিলে যখন সিএমডি বা ENTRYPOINT সহ একটি কমান্ড নির্দিষ্ট করা থাকে তখন ধারকটি চালানোর সময় এই কমান্ডটি কার্যকর হয়। এখন, যদি এই কমান্ডটি কোনও ইনপুটের প্রয়োজন ছাড়াই শেষ করতে পারে তবে এটি শেষ হবে এবং ধারকটি প্রস্থান করবে। এক্ষেত্রে ইন্টারেক্টিভ টার্মিনাল সরবরাহ docker run -it IMAGE_IDকরবে না । একটি উদাহরণ হ'ল নীচে ডকফাইফাইল থেকে নির্মিত ডকার ইমেজ-

FROM ubuntu
ENTRYPOINT echo hello 

আপনার যদি এই চিত্রটির টার্মিনালে যেতে হয়, আপনাকে এন্ট্রিপয়েন্ট কমান্ডটি সংশোধন করে পাত্রে চালিত রাখতে হবে।

FROM ubuntu
ENTRYPOINT echo hello && sleep infinity 

সাধারণত কন্টেইনারটি চালানোর পরে docker run IMAGE_ID, আপনি কেবল অন্য টার্মিনালে যেতে পারেন এবং ধারকটির টার্মিনালটি docker exec -it CONTAINER_ID bashপেতে ব্যবহার করতে পারেন।


"এবং আপনি ডকফেরাইল সম্পাদনা করতে পারেন": মূল পয়েন্টটি এখানে। উত্সাহিত।
ভনসি

0

আমার ক্ষেত্রে, আমি নির্দিষ্ট ফাইলের নাম এবং ডকফাইফিলের পিতামহিত ডিরেক্টরিগুলির ডিরেক্টরি নাম পরিবর্তন করেছি। যার কারণে ধারকটি আবার শুরু করার জন্য প্রয়োজনীয় প্যারামিটারগুলি খুঁজে পাচ্ছে না।

এটিকে আবার মূল নামকরণ করার পরে, ধারক মাখনের মতো শুরু হয়েছিল।


0

আমার এই বিষয়ে আলাদা ধারণা আছে। আমি এটি করতে পেরেছিলাম docker psএবং সেখানে একটি ডকারের ধারক চালু রয়েছে, আমি এটি পুনরায় চালু করার চেষ্টাও করেছি, তবে আমি এর সাথে একটি অধিবেশন পাওয়ার চেষ্টা করার সাথে সাথে New-PSSession -ContainerId $containerId -RunAsAdministratorএটি ত্রুটিযুক্ত হবে:

## [ত্রুটি] নতুন-পিএসএসশন: ইনপুট কনটেইনারআইডিএক্সএক্সএক্সএক্স বিদ্যমান নেই, ## [ত্রুটি] বা সংশ্লিষ্ট ধারকটি চলছে না।

আমার সমস্যাটি ছিল আমি নেটওয়ার্ক পরিষেবা দিয়ে চলছিলাম এবং এতে কন্টেনারটি দেখার যথেষ্ট অনুমতি নেই, যদিও আমি এটি ডকার কমান্ড চালানোর অনুমতি দিয়েছিলাম (ডকার সুরক্ষা গোষ্ঠী কনফিগারেশন সহ)

আমি ধারকগুলির সাথে কীভাবে কাজ করতে সক্ষম তা জানতাম না, তাই পরিবর্তে আমাকে এডমিন ব্যবহারকারী হিসাবে চালানোতে ফিরে যেতে হয়েছিল

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