docker run কমান্ডকে compose.yaml-এ রূপান্তর করুন: পোর্ট, ভলিউম, নেটওয়ার্ক, হেলথ চেক
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।docker run-এর প্রতিটি ফ্ল্যাগের একটি Compose কী আছে। ইমেজ image হিসেবেই থাকে, আর 5টি সাধারণ ফ্ল্যাগ সরাসরি মিলে যায়: -p হয় ports, -e হয় environment, -v হয় volumes, --restart হয় restart এবং --name হয় container_name, আর -it মেলে stdin_open ও tty-এর সঙ্গে। -d ও --rm-এর মতো ফ্ল্যাগের কোনো সমতুল্য নেই, কারণ docker compose up -d সার্ভিসগুলোকে ব্যাকগ্রাউন্ডে চালায়।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
এক বা একাধিক docker run কমান্ড পেস্ট করুন, ব্যাকস্ল্যাশ দিয়ে লাইন ভাঙা থাকলেও চলবে, অথবা একটি উদাহরণ দেখুন-এ ক্লিক করুন।
ডানদিকের compose.yaml পড়ুন: প্রতিটি কমান্ডের জন্য একটি সার্ভিস, আর নিচে ভলিউম ও নেটওয়ার্ক ঘোষণা করা।
যেসব ফ্ল্যাগের Compose-এ কোনো সমতুল্য নেই, যেমন --rm, সেগুলোর নোট দেখে নিন।
compose.yaml সংরক্ষণ করতে ডাউনলোড-এ ক্লিক করুন, তারপর একই ফোল্ডারে docker compose up -d চালান।
কাজ করা একটি docker run কমান্ডই একটি Compose ফাইলের সেরা সূচনাবিন্দু, কিন্তু হাতে 10টি ফ্ল্যাগ নতুন করে লিখলে ভুল হওয়ার সম্ভাবনা থাকে। কমান্ডটি, বা কয়েকটি, পেস্ট করুন এবং প্রতিটির জন্য একটি সার্ভিসসহ Compose Specification অনুযায়ী একটি compose.yaml পান, যাতে এটি docker compose up -d-এর সঙ্গে কাজ করে।
| docker run | compose.yaml |
|---|---|
--name web |
container_name: web |
-p 8080:80 |
ports: ["8080:80"] |
-e KEY=value |
environment: ["KEY=value"] |
-v data:/data |
volumes: সঙ্গে শীর্ষ স্তরের একটি data: |
--network shop-net |
networks: সঙ্গে shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true, tty: true |
--gpus all |
deploy.resources.reservations.devices |
কী বোঝা হয়। 70টিরও বেশি docker run ফ্ল্যাগ, Docker CLI যে সব বানানে গ্রহণ করে তার প্রতিটিতে: --flag value, --flag=value, -p80:80 এবং -it বা -dp 3000:3000-এর মতো একসঙ্গে লেখা ছোট ফ্ল্যাগ। \ (bash), ^ (cmd) বা ` (PowerShell) দিয়ে একাধিক লাইনে ভাঙা কমান্ড জোড়া লাগানো হয়, উদ্ধৃতিচিহ্ন শেল যেভাবে পড়ে সেভাবেই পড়া হয়, এবং ভলিউমে থাকা $(pwd) হয়ে যায় ./, কারণ Compose পাথগুলো Compose ফাইলের ফোল্ডার থেকে নির্ধারণ করে।
একসঙ্গে কয়েকটি কমান্ড। পুরো একটি সেটআপ স্ক্রিপ্ট পেস্ট করুন: প্রতিটি docker run একটি সার্ভিস হয়, docker network create-এর মতো অন্য কমান্ড বাদ দেওয়া হয়, এবং একই ইমেজ ব্যবহার করা সার্ভিসগুলো আলাদা নাম পায়।
কিছুই লুকানো নয়। --rm ও -d-এর মতো যেসব ফ্ল্যাগের Compose-এ সমতুল্য নেই, এবং টুলটি চেনে না এমন যেকোনো ফ্ল্যাগ, হারিয়ে না গিয়ে ফলাফলের নিচে তালিকাভুক্ত হয়। পোর্ট ও এনভায়রনমেন্টের মান উদ্ধৃতিচিহ্নের মধ্যে রাখা হয়, যাতে কোনো YAML রিডার 22:22-কে সংখ্যা মনে না করে। ফাইলে কোনো version: কী থাকে না, যা Compose Specification অপ্রচলিত ঘোষণা করেছে।
সবকিছু আপনার ব্রাউজারে চলে; আপনি যে কমান্ড পেস্ট করেন, যাতে প্রায়ই পাসওয়ার্ড থাকে, তা কখনো কোথাও পাঠানো হয় না।
একটি সার্ভিসের অধীনে প্রতিটি ফ্ল্যাগকে তার Compose কী দিন: ইমেজ image হিসেবে, -p ports হিসেবে, -e environment হিসেবে, -v volumes হিসেবে, --name container_name হিসেবে এবং --restart restart হিসেবে। নামযুক্ত ভলিউম ও কাস্টম নেটওয়ার্ক শীর্ষ স্তরেও একটি এন্ট্রি পায়। এখানে কমান্ডটি পেস্ট করলে পুরো compose.yaml লেখা হয়ে যায়, docker compose up -d-এর জন্য প্রস্তুত।
-i ফ্ল্যাগ হয় stdin_open: true এবং -t হয় tty: true, তাই -it দুটোই সেট করে। -d ফ্ল্যাগের কোনো কী নেই, কারণ docker compose up -d প্রতিটি সার্ভিস ব্যাকগ্রাউন্ডে চালু করে। পরে চলমান কোনো সার্ভিসে যুক্ত হতে, সার্ভিসের নামসহ docker compose attach বা docker compose exec ব্যবহার করুন।
ফাইলে কিছুই না: Compose সার্ভিসগুলো টিকে থাকার জন্য তৈরি, তাই এমন কোনো কী নেই যা কন্টেইনার থামলে সেটি মুছে দেয়। একবারের কাজের জন্য সার্ভিসের নামসহ docker compose run --rm চালান, যা পরে সেই কন্টেইনারটি সরিয়ে দেয়। --rm বাদ পড়লে ফলাফলের নিচের নোটে তা জানানো হয়।
--network shop-net সহ একটি docker run আগে থেকেই বিদ্যমান একটি নেটওয়ার্ক ব্যবহার করে। এটিকে external চিহ্নিত করলে Compose নিজের নেটওয়ার্ক তৈরি না করে সেই নেটওয়ার্কে যোগ দেয়, ফলে দুইভাবে চালু হওয়া কন্টেইনারগুলো তখনও পরস্পরের সঙ্গে যোগাযোগ করতে পারে। Compose-কে নিজে নেটওয়ার্ক তৈরি ও পরিচালনা করতে দিতে চাইলে external: true লাইনটি মুছে দিন।
হ্যাঁ, পোর্টগুলো "8080:80"-এর মতো স্ট্রিং হিসেবে লিখুন। কিছু YAML রিডার কোলন দিয়ে যুক্ত দুটি সংখ্যাকে ভিত্তি-60 সংখ্যা হিসেবে ধরে, ফলে 22:22 হয়ে যেতে পারে 1342 এবং একটি SSH ম্যাপিং ভেঙে যেতে পারে। এই টুল প্রতিটি পোর্ট, এনভায়রনমেন্ট এন্ট্রি ও ভলিউম স্ট্রিং উদ্ধৃতিচিহ্নের মধ্যে রাখে, যাতে ফাইলটি সব জায়গায় একই অর্থ বহন করে।
না। Compose Specification version: কী-কে অপ্রচলিত ঘোষণা করেছে, এবং docker compose-এর সাম্প্রতিক সংস্করণগুলো এটি থাকলে সতর্কবার্তা দেখায়। এখানে তৈরি ফাইল সরাসরি services: দিয়ে শুরু হয়, তারপর কমান্ডে নামযুক্ত ভলিউম বা কাস্টম নেটওয়ার্ক থাকলে volumes: ও networks: আসে।
হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।
এখনও আটকে আছেন? docker run থেকে docker compose কনভার্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।