목차
- WHY — 왜 Docker 네트워크를 알아야 하는가
- Docker 네트워크 종류
- 컨테이너 간 DNS 통신 원리
- 커스텀 네트워크 구성 실습
- 전체 요약
1. WHY — 왜 Docker 네트워크를 알아야 하는가
Redis Master-Replica를 구성할 때 Replica가 Master를 어떻게 찾는가?
K8s에서 Spring Boot 앱이 Redis에 접속할 때 IP 대신 이름을 쓰는 이유는?
컨테이너끼리 통신하는 원리를 모르면 이 질문에 답할 수 없다.
Docker 네트워크는 단순한 설정이 아니라 MSA 서비스 간 통신의 기반이다.
2. Docker 네트워크 종류
| 구분 | 특징 | 사용 시점 |
| bridge | 기본 네트워크. 컨테이너끼리 격리된 공간에서 통신 | 단일 호스트에서 컨테이너 간 통신 |
| host | 컨테이너가 Host OS 네트워크를 그대로 사용 | 네트워크 성능이 중요한 경우 |
| none | 네트워크 완전 차단 | 완전 격리가 필요한 경우 |
| overlay | 여러 호스트에 걸친 네트워크 | K8s, Docker Swarm 등 멀티 호스트 환경 |
실무에서 단일 호스트 기준으로는 bridge가 표준이다. K8s 환경에서는 overlay가 기반이 된다.
기본 bridge vs 커스텀 bridge
Docker를 설치하면 기본 bridge 네트워크(bridge)가 자동 생성된다. 기본 bridge는 컨테이너 이름으로 DNS 통신이 안 된다. IP로만 통신 가능하다.
커스텀 bridge 네트워크를 만들면 컨테이너 이름으로 DNS 통신이 가능하다. 이것이 커스텀 네트워크를 쓰는 핵심 이유다.
기본 bridge → IP로만 통신 (172.17.0.2 등)
커스텀 bridge → 컨테이너 이름 / 서비스 이름으로 통신
3. 컨테이너 간 DNS 통신 원리
같은 커스텀 네트워크 안의 컨테이너끼리는 이름이 자동으로 IP로 해석된다. Docker가 내부 DNS 서버를 자동으로 구성해주기 때문이다.
redis-master (172.20.0.2)
redis-replica-1 (172.20.0.3)
redis-replica-2 (172.20.0.4)
redis-replica-1이 redis-master에 접속할 때 :
redis-master → DNS 조회 → 172.20.0.2 → 연결
IP를 직접 지정하지 않아도 된다. 컨테이너가 재시작되어 IP가 바뀌어도 이름으로 찾으니까 설정 변경이 필요 없다.
실무 연결 AWS VPC 안에서 EC2 인스턴스끼리 Private DNS로 통신하는 것과 같은 원리다. Spring Boot application.yml에서 host: redis-master로 쓸 수 있는 이유가 바로 이것이다.
외부에서 컨테이너 내부 접근
Mac(Host)에서 컨테이너 내부 네트워크에 직접 접근은 불가하다. 같은 네트워크에 있는 컨테이너를 Bastion Host처럼 경유해서 접근한다.
Mac (Host)
│
│ docker exec -it redis-master redis-cli
▼
redis-master (컨테이너)
│
│ redis-master → redis-replica-1 (이름으로 통신)
▼
redis-replica-1 (컨테이너)
4. 커스텀 네트워크 구성 실습
네트워크 생성
docker network create redis-cluster-net
네트워크 확인
docker network ls
docker network inspect redis-cluster-net
컨테이너를 커스텀 네트워크에 연결
docker run -d \
--name redis-master \
--network redis-cluster-net \
redis:7.2
docker run -d \
--name redis-replica-1 \
--network redis-cluster-net \
redis:7.2
DNS 통신 확인
# redis-master에서 redis-replica-1의 IP 조회
docker exec -it redis-master sh -c "getent hosts redis-replica-1"
# 172.20.0.3 redis-replica-1
이름이 자동으로 IP로 해석되는 것을 확인할 수 있다.
주요 명령어
# 네트워크 목록
docker network ls
# 네트워크 상세 정보 (연결된 컨테이너 확인)
docker network inspect redis-cluster-net
# 실행 중인 컨테이너에 네트워크 추가 연결
docker network connect redis-cluster-net 컨테이너명
# 네트워크 삭제
docker network rm redis-cluster-net
5. 전체 요약
Docker 네트워크 핵심 원칙
├── 기본 bridge: IP로만 통신 (DNS 안 됨)
├── 커스텀 bridge: 이름으로 DNS 통신 가능 → 실무 표준
├── overlay: 멀티 호스트 환경 (K8s 기반)
└── 외부 접근: 같은 네트워크 컨테이너를 Bastion Host처럼 경유
'Infra & Network' 카테고리의 다른 글
| [Kubernetes | Part 1] Kubernetes 기초 (0) | 2026.05.01 |
|---|---|
| [Redis HA | Part 2] Redis Cluster — 샤딩 + HA (0) | 2026.04.30 |
| [Docker | Part 4] Volume + Network + Registry (0) | 2026.04.30 |
| [Docker | Part 3] Docker Compose (0) | 2026.04.30 |
| [Docker | Part 2] Dockerfile + Multi-stage Build (0) | 2026.04.28 |