Network di Docker
Docker membuat jaringan virtual sehingga container bisa berkomunikasi satu sama lain. Memahami networking Docker sangat penting untuk arsitektur microservices.
Jenis Network Driver
- bridge — Default. Container di network yang sama bisa saling akses via nama container
- host — Container pakai network host langsung (tidak ada isolasi port)
- none — Tidak ada network (terisolasi total)
- overlay — Untuk Docker Swarm, connect container antar host
Membuat & Mengelola Network
# Buat custom network
docker network create my-network
# Jalankan container di network tertentu
docker run -d --name api --network my-network node:20
docker run -d --name db --network my-network postgres:16
# Container api bisa akses db via hostname "db"
# curl http://db:5432 (dari dalam container api)
# List networks
docker network ls
# Inspect network
docker network inspect my-network
# Connect container ke network
docker network connect my-network existing-container
Docker Compose Networking
# Compose otomatis buat network bernama {project}_default
# Semua service bisa akses satu sama lain via nama service
services:
app:
build: .
environment:
# Akses db via hostname "db", bukan localhost
DB_HOST: db
REDIS_HOST: redis
db:
image: postgres:16
redis:
image: redis:7
Port Mapping
# Format: HOST_PORT:CONTAINER_PORT
docker run -p 8080:3000 my-app
# Multiple ports
docker run -p 80:80 -p 443:443 nginx
# Hanya akses dari localhost
docker run -p 127.0.0.1:3000:3000 my-app