🌐 Containers Need to Communicate
Default bridge works. Different network modes suit different needs. Bridge (default), Host (no isolation), None (isolated).
📝 Network Modes
Bridge (default): - Container gets private IP - Access via port mapping (-p 80:8080) - Good for most containers Host: - Container uses host network stack - No port mapping needed - Performance (no NAT) - Security risk (no isolation) None: - No network access - Completely isolated - For offline processing Container: - Share network with another container - Use same IP - Good for sidecar patterns
🎯 Examples
# Bridge (default) docker run -d --name web -p 80:8080 nginx # Host (no isolation) docker run -d --name web --network host nginx # None (isolated) docker run -d --name offline --network none alpine sleep 1000 # Container (share network) docker run -d --name redis redis docker run -d --name app --network container:redis node app # Create custom bridge network docker network create mynet docker run -d --network mynet --name db postgres docker run -d --network mynet --name app myapp
💡 When to Use Which
- Bridge: Most use cases, default
- Host: High-performance, but less secure
- None: Security-sensitive, offline processing
- Container: Sidecar, proxy, service mesh
- Custom bridge: Better isolation, container name resolution
“App couldn’t connect to DB. Switched to custom bridge network. Container name resolution worked. Network modes are essential for multi-container apps.”
