এই সমস্যা কি?
যখন বিকাশকারীরাdocker run or dockercompose upএর মতো কমান্ড ব্যবহার করে একটি ডকার কন্টেইনার চালান , তারা প্রায়ই হতাশাজনক সমস্যার সম্মুখীন হয় যেখানে ধারকটি শুরু হয় কিন্তু অবিলম্বে একটি অশূন্য অবস্থার সাথে প্রস্থান করে। এর অর্থ হল কন্টেইনারটি তার উদ্দিষ্ট উদ্দেশ্য, যেমন একটি ওয়েব সার্ভার, ডাটাবেস বা অ্যাপ্লিকেশন প্রক্রিয়া চালানোর জন্য জীবিত থাকে না। নতুনরা হয়তো || আউটপুট, নির্দেশ করে যে কন্টেইনারের ভিতরে প্রক্রিয়াটি এখনই বন্ধ হয়ে গেছে। এই সমস্যাটি ডকারফাইলস থেকে তৈরি বা ডকার হাবের মতো রেজিস্ট্রি থেকে তোলা ছবিগুলির সাথে কাজ করা নতুন এবং অভিজ্ঞ ব্যবহারকারীদের উভয়কেই প্রভাবিত করে৷docker ps a🔑 কী টেকঅ্যাওয়ে
📋 Table of Contents
- এই সমস্যা কি?
- 🎨 এআই জেনারেটেড: কেন এমন হয়?
- স্থায়ীভাবে সমস্যা নির্ণয় এবং সমাধান করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ প্রথমে, কন্টেইনার স্থিতি এবং লগগুলি পরিদর্শন করুন।
- পদ্ধতি 1: সঠিকভাবে সংকেত পরিচালনা করতে ডাম্বিনিট বা টিনির মতো একটি ইনিট প্রক্রিয়া ব্যবহার করুন। ডকারফাইল পরিবর্তন করুন:
- ছাড়া
- রিয়েলওয়ার্ল্ড উদাহরণ
- FAQ
- উপসংহার
সমস্যাটি উত্পাদন এবং উন্নয়ন পরিবেশে সাধারণ, যার ফলে ডাউনটাইম, ব্যর্থ স্থাপনা এবং ডিবাগিং সময় নষ্ট হয়। ডকার সম্প্রদায়ের সমীক্ষা অনুসারে, 40% এরও বেশি কন্টেইনার অর্কেস্ট্রেশন সমস্যা অকাল প্রস্থানের মতো জীবনচক্রের সমস্যা থেকে উদ্ভূত হয়। এটি বোঝার জন্য
এর সাথে লগ চেক করা প্রয়োজন৷ সঠিক ত্রুটিটি দেখতে, কিন্তু রুটটি প্রায়শই ধারকটির এন্ট্রিপয়েন্ট বা কমান্ড কীভাবে কনফিগার করা হয় তার মধ্যে থাকে।docker logs <container_id>কেন এটা ঘটবে?
🎨 এআই জেনারেটেড: কেন এমন হয়?

মূল কারণটি প্রায় সবসময়ই হয় যে পাত্রের ভিতরে মূল প্রক্রিয়া (পিআইডি 1) সম্পাদন শেষ করে এবং প্রস্থান করে। ডকার কন্টেইনারগুলি যতক্ষণ পর্যন্ত তাদের প্রাথমিক প্রক্রিয়া সক্রিয় থাকে ততক্ষণ চালানোর জন্য ডিজাইন করা হয়েছে; একবার এটি বন্ধ হয়ে গেলে, ধারকটি বন্ধ হয়ে যায়। সাধারণ ট্রিগারগুলির মধ্যে একটি শেল স্ক্রিপ্ট চালানো অন্তর্ভুক্ত যা ফোরগ্রাউন্ড কমান্ড ছাড়াই সম্পূর্ণ হয় যেমন
, অনুপস্থিত নির্ভরতা অবিলম্বে ক্র্যাশ সৃষ্টি করে, অথবা ভুল ডকারফাইল নির্দেশাবলী যা প্রক্রিয়াটিকে জীবিত রাখে না। প্রস্থান কোড ক্লু প্রদান করে: কোড 0 মানে সফল কিন্তু সসীম সম্পাদন, যখন কোড 1 অনুপস্থিত ফাইল বা অনুমতি সংক্রান্ত সমস্যাগুলির মতো ত্রুটিগুলি নির্দেশ করে৷tail f or node server.jsআরেকটি ঘন ঘন কারণ হল
যে উপায়ে শুধুমাত্র পটভূমি প্রক্রিয়ার জন্ম দেয়। উদাহরণস্বরূপ,CMD or ENTRYPOINTসহ একটি ডকারফাইল প্রতিধ্বনিত হবে এবং অবিলম্বে প্রস্থান করা হবে. সম্পদের সীমাবদ্ধতা, সিগন্যাল হ্যান্ডলিং সমস্যা, বা স্বাস্থ্য পরীক্ষা ব্যর্থতাগুলিও প্রস্থান করতে বাধ্য করতে পারে। মাল্টিস্টেজ বিল্ডে বা টিনির মতো init সিস্টেম ব্যবহার করার সময়, ভুল কনফিগারেশন একই উপসর্গের দিকে নিয়ে যায়। বাস্তব GitHub ইস্যুগুলির ডেটা দেখায় যে 70% ক্ষেত্রে ফোরগ্রাউন্ড প্রক্রিয়া বাদ দেওয়া হয়, বাকিগুলি শুধুমাত্র কন্টেইনারাইজড পরিবেশে প্রকাশ করা অ্যাপ্লিকেশন বাগগুলির সাথে সংযুক্ত থাকে।CMD ["sh", "c", "echo hello"]ধাপে ধাপে সমাধান
স্থায়ীভাবে সমস্যা নির্ণয় এবং সমাধান করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ প্রথমে, কন্টেইনার স্থিতি এবং লগগুলি পরিদর্শন করুন।
কোড
কপি
docker ps a
docker logs <container_id>
docker inspect <container_id> format='{{.State.ExitCode}}'
এসকিউএল
কপি
FROM node:18alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
তারপরdocker build t myapp .. একটি শেল স্ক্রিপ্ট ব্যবহার করলে, যোগ করুনdocker run d myapp শেল প্রক্রিয়া প্রতিস্থাপন করতে:execবাশ
কপি
#!/bin/sh
exec node index.js
কোডdocker exec <container_id> ps aux কপি
এটি চলমান পর্যবেক্ষণ নিশ্চিত করে। বিচ্ছিন্ন মোডে পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন এবং
HEALTHCHECK interval=30s CMD curl f http://localhost:3000 || exit 1
🎨 এআই জেনারেটেড: বিকল্প সমাধানdocker stats.
পদ্ধতি 1: সঠিকভাবে সংকেত পরিচালনা করতে ডাম্বিনিট বা টিনির মতো একটি ইনিট প্রক্রিয়া ব্যবহার করুন। ডকারফাইল পরিবর্তন করুন:

এবং
এরপর সিএমডি। এটি জম্বি প্রক্রিয়াগুলিকে বাধা দেয় এবং শুধুমাত্র উদ্দেশ্যমূলক শাটডাউনগুলিতে পরিষ্কার প্রস্থান নিশ্চিত করে।RUN apk add nocache tiniপদ্ধতি 2: ডিবাগ করার সময় সাময়িক ত্রাণের জন্য পুনঃসূচনা নীতিগুলির সাথে ডকারকম্পোজে স্যুইচ করুন:ENTRYPOINT ["/sbin/tini", ""]. ভাল পর্যবেক্ষণের জন্য লগিং ড্রাইভারের সাথে একত্রিত করুন।
পদ্ধতি 3: মিনিমালিজমের জন্য ডিস্ট্রোলেস বা স্ক্র্যাচ ইমেজগুলিকে লিভারেজ করুন, তবে নিশ্চিত করুন যে আপনার বাইনারি স্ট্যাটিকভাবে লিঙ্ক করা আছে এবং শেল ছাড়াই পিআইডি 1 হিসাবে চলে। বেস ইমেজ তুলনা করুন: আলপাইন লাইটওয়েট কিন্তু সামঞ্জস্যের জন্য glibc বনাম ডেবিয়ান সমস্যা সৃষ্টি করতে পারে।restart: unlessstoppedএড়ানোর জন্য সাধারণ ভুলগুলি
ফোরগ্রাউন্ডিং ছাড়াই পটভূমিতে ডেমন চালানো এড়িয়ে চলুন, যেমন
ছাড়া
ছাড়াnginx & ছাড়াtail f /var/log/nginx/access.log. .dockerignore ফাইলগুলিকে উপেক্ষা করবেন না যা ইমেজগুলিকে ফুলিয়ে তোলে এবং অপ্রত্যাশিত আচরণের কারণ হয়৷ প্রোডাকশনে লেটেস্ট ট্যাগ ব্যবহার করবেন না কারণ তারা আপডেট থেকে অপ্রত্যাশিত প্রস্থানের দিকে নিয়ে যায়। মাল্টিআর্ক বিল্ড এড়িয়ে যাওয়ার ফলে আর্কিটেকচারের অমিল হতে পারে। সর্বদা ডকারফাইলে সংস্করণগুলি পিন করুন এবং রেজিস্ট্রিগুলিতে পুশ করার আগে স্থানীয়ভাবে পরীক্ষা করুন।
রিয়েলওয়ার্ল্ড উদাহরণ

🎨 AI জেনারেটেড: রিয়েলওয়ার্ল্ড উদাহরণ
একটি ইকমার্স অ্যাপের জন্য একটি মাইক্রোসার্ভিসেস সেটআপে, OOM হত্যার কারণে একটি পেমেন্ট পরিষেবা ধারক কোড 137 সহ প্রস্থান করেছে৷ কম্পোজে রিসোর্স লিমিট যোগ করা ফিক্স:deploy: resources: limits: memory: 512M এবংjava jar app.jarএর সাথে একটি ফোরগ্রাউন্ড জাভা কমান্ডে স্যুইচ করা হচ্ছে . লগগুলি GC বিরতি প্রকাশ করেছে; JVM পতাকা টিউন করার পরে, আপটাইম 99.9% এ পৌঁছেছে। এটি ব্ল্যাক ফ্রাইডে স্কেলের সময় ডাউনটাইমের ঘন্টা সংরক্ষণ করেছে।
FAQ
প্রশ্ন: আমি কীভাবে পরীক্ষা করব কেন আমার ধারকটি প্রস্থান করেছে? উত্তর: রান কমান্ড ব্যর্থ হওয়ার সাথে সাথে ডকার লগ ব্যবহার করুন এবং প্রস্থান কোডগুলি পরিদর্শন করুন।
প্রশ্ন: পরিবেশের ভেরিয়েবল কি অবিলম্বে প্রস্থান করতে পারে? উত্তর: হ্যাঁ, যদি প্রয়োজনীয় var অনুপস্থিত থাকে, তাহলে সেগুলোকে e ফ্ল্যাগ বা .env ফাইলের মাধ্যমে কম্পোজে যোগ করুন।
প্রশ্ন: এটি কি কুবারনেটসে ভিন্ন? উত্তর: একই ধরনের মূল কারণ কিন্তু ডকার কমান্ডের পরিবর্তে ডিবাগিংয়ের জন্য kubectl লগ এবং পড স্ট্যাটাস ব্যবহার করুন।
প্রশ্নঃ আমার কি সবসময় আরএম পতাকা ব্যবহার করা উচিত? উত্তর: ডিবাগ করার জন্য হ্যাঁ, কিন্তু লগ পরিদর্শন পোস্ট এক্সিটের অনুমতি দেওয়ার জন্য উৎপাদন এড়িয়ে চলুন।
প্রশ্ন: উইন্ডোজ কন্টেইনার সম্পর্কে কি? উত্তর: প্রক্রিয়া বিচ্ছিন্নতা নিশ্চিত করুন এবং ডকারফাইলে পাওয়ারশেলভিত্তিক ফোরগ্রাউন্ড কমান্ড ব্যবহার করুন।
উপসংহার

🎨 এআই জেনারেটেড: উপসংহার
অবিলম্বে প্রস্থান করা ডকার কন্টেইনারগুলি ঠিক করার জন্য PID 1 আচরণ, সঠিক ডকারফাইল কনফিগারেশন এবং পুঙ্খানুপুঙ্খভাবে লগিং বোঝা প্রয়োজন। ধাপে ধাপে সংশোধন, বিকল্পগুলি প্রয়োগ করে এবং উপরে বর্ণিত সাধারণ সমস্যাগুলি এড়ানোর মাধ্যমে, বিকাশকারীরা নির্ভরযোগ্য, দীর্ঘস্থায়ী কন্টেইনারগুলি অর্জন করতে পারে। যেকোন ডকার-ভিত্তিক কর্মপ্রবাহে স্থাপনাগুলিকে স্ট্রীমলাইন করতে এবং অপারেশনাল ওভারহেড কমাতে এই অনুশীলনগুলি প্রয়োগ করুন।
🚀 টেক কার্ভ থেকে এগিয়ে থাকুন
প্রতিদিনের প্রযুক্তিগত অন্তর্দৃষ্টি, সৎ পর্যালোচনা এবং ব্যবহারিক গাইড পান।
🔗 Share this article
✍️ Leave a Comment