Docker Swarm Services (ডকার সোয়ার্ম সার্ভিসেস)
ডকার সোয়ার্মে আমরা সরাসরি কন্টেইনার রান করি না; তার বদলে আমরা 'Service' তৈরি করি। একটি সার্ভিস হলো একটি অ্যাপ্লিকেশনের অবস্থা বা ডিক্লেয়ারেশন (কতগুলো কন্টেইনার চলবে, কোন ইমেজ ব্যবহার হবে ইত্যাদি)। ম্যানেজার নোড এই ডিক্লেয়ারেশন অনুযায়ী কন্টেইনারগুলো ক্লাস্টারের নোডগুলোতে ডিস্ট্রিবিউট করে।
১. সার্ভিস তৈরি করা (Create Service)
ক্লাস্টারে একটি নতুন সার্ভিস চালু করার জন্য নিচের কমান্ডটি ব্যবহার হয়:
docker service create --name my-web --replicas 3 -p 8080:80 nginx--name: সার্ভিসের একটি নাম দেওয়া।--replicas: কয়টি কন্টেইনার (Task) একসাথে চলবে তা নির্ধারণ করা।-p: পোর্ট এক্সপোজ করা (Routing Mesh-এর কারণে ক্লাস্টারের যেকোনো নোডের এই পোর্টে হিট করলে সার্ভিসটি পাওয়া যাবে)।
২. সার্ভিস দেখা এবং লিস্ট করা (List & Inspect)
বর্তমানে ক্লাস্টারে কি কি সার্ভিস চলছে তা দেখতে:
docker service lsসার্ভিসের কন্টেইনারগুলো (Tasks) কোন কোন নোডে চলছে তা দেখতে:
docker service ps <SERVICE-NAME>সার্ভিসের কন্টেইনারগুলোর সম্মিলিত লগ দেখতে:
docker service logs <SERVICE-NAME>৩. সার্ভিস স্কেলিং (Scaling Services)
সোয়ার্মের অন্যতম বড় সুবিধা হলো খুব সহজে সার্ভিস স্কেল করা। যদি আপনার আরও কন্টেইনার দরকার হয়:
docker service scale my-web=5অথবা:
docker service update --replicas 5 my-webএটি সাথে সাথে ক্লাস্টারে আরও ২নি কন্টেইনার এড করে দিবে।
৪. সার্ভিস আপডেট (Updating Services)
চলমান সার্ভিসের ইমেজ ভার্সন বা কনফিগারেশন পরিবর্তন করতে:
docker service update --image nginx:latest my-webসোয়ার্ম এটি Rolling Update হিসেবে করবে। অর্থাৎ সব কন্টেইনার একসাথে বন্ধ হবে না, বরং একে একে আপডেট হবে যাতে সার্ভিসটি সবসময় সচল (Running) থাকে।
৫. সার্ভিস রিমুভ (Remove Service)
কন্টেইনারসহ সম্পূর্ণ সার্ভিসটি মুছে ফেলতে:
docker service rm my-web৬. Replicated vs Global Mode
সার্ভিস দুই মোডে রান করতে পারে:
- Replicated (Default): আপনি নির্দিষ্ট করে দেন কয়টি কন্টেইনার চলবে (যেমন ৫টি)। সোয়ার্ম সেগুলোকে নোডগুলোর মধ্যে ভাগ করে দেয়।
- Global: প্রতিটি নোডে (ম্যানেজার এবং ওয়ার্কার) ঠিক একটি করে কন্টেইনার চলবে। এটি সাধারণত মনিটরিং এজেন্ট বা লগ কালেক্টরের জন্য ব্যবহৃত হয়।
# Global মোডে সার্ভিস তৈরি
docker service create --name monitor --mode global prometheus/node-exporter