DockerIntermediate
Docker Networks
Bridge, host, none network, container-to-container communication ও DNS — বাংলায়।
12টি অংশবাংলা ভাষায়
Container-গুলো ডিফল্টে একে অপরকে দেখতে পায় না। Docker network দিয়ে container-গুলো কথা বলতে পারে — নাম দিয়ে, IP চিন্তা না করে।
Network driver
| Driver | কাজ |
|---|---|
bridge | ডিফল্ট — container-এর মাঝে isolated communication |
host | container host-এর সাথে network শেয়ার — port mapping লাগে না |
none | কোনো network নেই (fully isolated) |
overlay | Swarm/Kubernetes-এ different hosts |
Custom bridge network
Default bridge-এ container-কে IP দিয়ে কথা বলতে হয় (IP বদলায়)। Custom network-এ container-এর নাম দিয়ে DNS resolve হয় — এটাই best practice।
Create + connectbash
bash
docker network create app-net
docker run -d --name mongodb --network app-net mongo:7
docker run -d --name api --network app-net -p 4000:4000 my-api
# api container-এর ভেতরে থেকে:
docker exec api ping mongodb # নাম দিয়েই resolveCompose-এ network
compose.ymlyaml
yaml
services:
api:
build: .
ports:
- "4000:4000"
mongo:
image: mongo:7
# compose নিজে default network বানায়;
# দুটি service নাম দিয়ে একে অপরকে দেখতে পায়Port publish
Only shared network means container-গুলো host বাইরে থেকে access যোগ্য নয়। বাহির থেকে access দিতে -p host:container লাগে। যোগাযোগ: network container↔container, port publish host→container।
Network কমান্ডbash
bash
docker network ls
docker network inspect app-net
docker network connect app-net mongodb
docker network disconnect app-net mongodb
docker network rm app-netনাম দিয়েই connect
Compose-এ MONGO_URI=mongodb://mongodb:27017/db লিখতে পারেন — mongodb হলো service নাম, যা network-এ DNS-এর মতো কাজ করে। IP ব্যবহার করার দরকার নেই।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।