Docker Networks: কন্টেইনারের মধ্যে যোগাযোগ ব্যবস্থা 🌐
একাধিক কন্টেইনার যখন একসাথে কাজ করে (যেমন: একটি ওয়েব অ্যাপ এবং একটি ডাটাবেস), তখন তাদের নিজেদের মধ্যে কথা বলার বা ডেটা আদান-প্রদান করার প্রয়োজন হয়। ডকার নেটওয়ার্কিং এই যোগাযোগ ব্যবস্থাটি সহজ এবং নিরাপদ করে।
১. Network Isolation (নেটওয়ার্ক আইসোলেশন)
ডকার ডিফল্টভাবে প্রতিটি প্রোজেক্ট বা কন্টেইনারকে আলাদা নেটওয়ার্কে রাখে। এর ফলে:
- Security: এক নেটওয়ার্কের কন্টেইনার অন্য নেটওয়ার্কের কন্টেইনারকে দেখতে পায় না।
- Avoid Conflicts: একই পোর্ট (যেমন: 80) একাধিক কন্টেইনারে আলাদা নেটওয়ার্কে চলতে পারে।
২. Container Communication
কন্টেইনারগুলো একে অপরের সাথে যোগাযোগ করার জন্য সাধারণত তাদের IP Address অথবা Container Name ব্যবহার করে। ডকারের আধুনিক নেটওয়ার্কিংয়ে নাম ব্যবহার করাই সবচেয়ে ভালো প্র্যাকটিস।
৩. ডকার নেটওয়ার্কের প্রকারভেদ (Network Types)
ডকারে প্রধানত ৫ ধরনের ড্রাইভ বা নেটওয়ার্ক টাইপ থাকে:
ক) Bridge (Default)
এটি ডকারের ডিফল্ট নেটওয়ার্ক। যখন আপনি কোনো নেটওয়ার্ক উল্লেখ করেন না, তখন কন্টেইনার এই ব্রিজে যুক্ত হয়। এটি একই হোস্ট মেশিনে থাকা কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।
খ) Host
এই মোডে কন্টেইনারের জন্য আলাদা কোনো নেটওয়ার্ক আইসোলেশন থাকে না। কন্টেইনার সরাসরি হোস্ট মেশিনের নেটওয়ার্ক ব্যবহার করে। এটি খুব ফাস্ট কিন্তু সিকিউরিটির দিক থেকে কিছুটা দুর্বল।
গ) None
কোনো নেটওয়ার্ক কানেকশন থাকে না। এটি শুধুমাত্র তখনই ব্যবহৃত হয় যখন আপনি চান কন্টেইনারটি বাইরের পৃথিবী বা অন্য কোনো কন্টেইনার থেকে সম্পূর্ণ বিচ্ছিন্ন থাকুক।
ঘ) Overlay
এটি একাধিক ডকার হোস্টের (Docker Swarm বা Cluster) মধ্যে কন্টেইনারগুলোর যোগাযোগ নিশ্চিত করে। যারা বড় স্কেলে কাজ করেন তাদের জন্য এটি অপরিহার্য।
ঙ) Macvlan
এটি একটি কন্টেইনারকে সরাসরি একটি ফিজিক্যাল নেটওয়ার্ক ইন্টারফেসের MAC address এসাইন করতে দেয়। এর ফলে কন্টেইনারটি নেটওয়ার্কে একটি ফিজিক্যাল ডিভাইসের মতো আচরণ করে।
৪. DNS Resolution (অটোমেটিক নাম শনাক্তকরণ)
ডকারের একটি দুর্দান্ত ফিচার হলো এর ইন্টারনাল DNS Server।
- আপনি যদি একটি কাস্টম নেটওয়ার্ক তৈরি করেন, তবে একটি কন্টেইনার অন্যটিকে শুধু নাম দিয়ে (যেমন:
ping database) খুঁজে পাবে। - আপনাকে আইপি অ্যাড্রেস মনে রাখার কোনো প্রয়োজন নেই।
৫. সহজ কমান্ড ওভারভিউ
| কাজ | কমান্ড |
|---|---|
| Create Network | docker network create my_net |
| List Networks | docker network ls |
| Connect Container | docker network connect my_net my_container |
| Inspect Network | docker network inspect my_net |
TIP
প্রোডাকশনে সবসময় নিজের একটি কাস্টম Bridge নেটওয়ার্ক তৈরি করে অ্যাপ চালানো উচিত। এতে কন্টেইনারগুলোর মধ্যে নাম দিয়ে যোগাযোগ করা (DNS resolution) অনেক সহজ হয়।