디폴트 브릿지 vs 사용자 정의 브릿지
2025. 12. 31. 15:08ㆍDocker
🧱 디폴트 브릿지 vs 사용자 정의 브릿지



1️⃣ 디폴트 브릿지 (default bridge)
✔️ 정체
- Docker 설치 시 자동으로 생성
- 이름:
bridge - 실제 Linux Bridge 이름:
docker0 - 대역:
172.17.0.0/16
docker network ls
NETWORK ID NAME DRIVER SCOPE
xxxx bridge bridge local
🔧 동작 방식
docker run nginx
docker run redis
- 아무 네트워크 지정 ❌
- 👉 자동으로 default bridge에 연결
구조:
nginx ─┐
├─ docker0 (bridge)
redis ─┘
❌ 치명적인 한계
① 컨테이너 이름 기반 DNS ❌
ping redis
➡️ 안 됩니다
왜냐하면:
- default bridge에는 Docker DNS가 붙지 않음
- IP로만 통신 가능
ping 172.17.0.3 # 가능
② 수동 연결만 가능
docker network connect bridge my-container
- 자동 서비스 디스커버리 ❌
- 관리 매우 불편
③ 네트워크 격리 불가
- 모든 컨테이너가 한 브리지에 섞임
- 보안/계층 분리 불가능
📌 결론 (디폴트 브릿지)
❗ “있지만 쓰라고 만든 게 아니다”
- 학습용
- 임시 테스트
- 실무·Compose·MSA ❌
2️⃣ 사용자 정의 브릿지 (User-defined Bridge)
✔️ 정체
- 사용자가 직접 생성
- Docker가 강력한 기능을 활성화
docker network create backend
🔧 동작 방식
docker run --network backend --name api nginx
docker run --network backend --name db mysql
구조:
api ─┐
├─ backend (user bridge + Docker DNS)
db ──┘
⭐ 사용자 정의 브릿지의 핵심 장점
① 컨테이너 이름 기반 DNS ⭕ (가장 중요)
ping db
✔️ 즉시 동작
이유:
- Docker 내장 DNS 서버 (127.0.0.11)
- 컨테이너 이름 → IP 자동 매핑
cat /etc/resolv.conf
nameserver 127.0.0.11
② 자동 네트워크 연결
- Compose 사용 시 자동 연결
- 서비스 이름 = DNS 이름
services:
api:
networks: [backend]
db:
networks: [backend]
➡️ jdbc:mysql://db:3306/app
③ 네트워크 격리 가능 (보안 핵심)
networks:
frontend:
backend:
[Client] → frontend → api → backend → db
- db는 frontend 접근 ❌
- api만 접근 ⭕
➡️ 네트워크 레벨 보안
④ IP 대역 직접 지정 가능
docker network create \
--subnet 172.30.0.0/16 \
mynet
- 충돌 방지
- VPN / 사내망 연동 유리
⑤ 컨테이너 재시작 시 IP 변경에도 안전
- IP 하드코딩 ❌
- 이름 기반 통신 ⭕
- MSA 필수 조건
🔍 기능 비교 표 (한 눈에)
| 항목 | 디폴트 브릿지 | 사용자 정의 브릿지 |
|---|---|---|
| 자동 생성 | ⭕ | ❌ |
| 컨테이너 이름 DNS | ❌ | ⭕ |
| Docker DNS | ❌ | ⭕ |
| 네트워크 격리 | ❌ | ⭕ |
| Compose 친화성 | ❌ | ⭕ |
| 실무 사용 | ❌ | ⭕ |
| 보안 설계 | ❌ | ⭕ |
⚠️ 실무에서 실제로 터지는 사고 예
❌ default bridge 사용
jdbc:mysql://localhost:3306/db
- 컨테이너 분리 → 연결 실패
- IP 변경 → 서비스 장애
✅ user-defined bridge 사용
jdbc:mysql://db:3306/db
- 컨테이너 재시작 OK
- 확장 OK
- 배포 OK
🎯 핵심 문장
디폴트 브릿지는 단순한 L2 브리지일 뿐이며,
사용자 정의 브릿지는 Docker DNS와 서비스 디스커버리를 포함한
“컨테이너 통신 플랫폼”이다.
🔥 한 줄 요약
❌ default bridge는 “자동이라 쓰는 것”
⭕ user-defined bridge는 “설계해서 쓰는 것”
'Docker' 카테고리의 다른 글
| DockerFile (0) | 2025.12.31 |
|---|---|
| Docker Compose 네트워크 (0) | 2025.12.31 |
| Docker Network (0) | 2025.12.31 |
| Union File System & Overlay File System (0) | 2025.12.31 |
| Spring Boot 앱의 JAR 파일 구조 (0) | 2025.12.30 |