기본 패턴
bash
docker network create appnet
docker run -d --name db --network appnet postgres:17
docker run -d --name api --network appnet my-api설명
- 같은 Docker network에 붙은 컨테이너는 IP를 외우지 않아도 이름으로 서로를 찾을 수 있습니다.
- 이 방식은 "컨테이너 IP는 바뀔 수 있지만 서비스 이름은 유지된다"는 전제를 바탕으로 움직입니다.
- Compose에서는 서비스 이름이 기본 호스트명처럼 동작하므로
db,redis,api같은 이름으로 내부 통신을 설계하기 쉽습니다. - 외부에 포트를 공개하는 것과 내부 서비스가 서로를 찾는 것은 다른 문제입니다. 내부 통신은 network, 외부 접근은 port publishing이 핵심입니다.
- 컨테이너 수가 늘어날수록 네트워크를 "누가 누구와 대화해야 하는가" 기준으로 나누는 편이 운영 가시성에 도움이 됩니다.
짧은 예제
yaml
services:
api:
build: .
db:
image: postgres:17빠른 정리
| 항목 | 의미 |
|---|---|
| named network | 관련 컨테이너 묶음 |
| 서비스 이름 | 내부 DNS 이름처럼 사용 |
| 포트 공개 | 호스트나 외부 접근용 |
| 내부 통신 | 같은 network 안에서 이름으로 연결 |
주의할 점
localhost는 각 컨테이너 자신을 가리킵니다.
컨테이너끼리 연결할 때는 localhost 대신 같은 네트워크의 서비스 이름을 써야 기대한 대로 동작합니다.
참고 링크
2 sources