Docker 컨테이너는 기본적으로 격리된 환경에서 실행됩니다. 네트워크 설정을 통해 컨테이너끼리 통신하거나, 외부와 연결할 수 있습니다.
| 드라이버 | 설명 |
|---|---|
bridge | 기본값. 같은 호스트의 컨테이너 간 통신 |
host | 호스트 네트워크를 그대로 사용 (포트 매핑 불필요) |
none | 네트워크 완전 차단 |
overlay | 여러 호스트에 걸친 컨테이너 간 통신 (Swarm) |
Docker 설치 시 기본으로 생성되는 docker0 브릿지를 사용합니다.
# 사용자 정의 bridge 네트워크 생성
docker network create my-network
# 컨테이너를 네트워크에 연결하며 실행
docker run -d --name app --network my-network my-image
# 같은 네트워크 내 컨테이너끼리 컨테이너 이름으로 통신 가능
docker run -d --name db --network my-network postgres사용자 정의 bridge 네트워크에서는 컨테이너 이름이 자동으로 DNS로 동작합니다.
기본bridge에서는 IP 직접 지정이 필요합니다.
컨테이너 포트를 호스트에 노출할 때 -p 옵션을 사용합니다.
# 호스트 8080 → 컨테이너 80
docker run -p 8080:80 nginx
# 모든 인터페이스 대신 localhost에만 바인딩
docker run -p 127.0.0.1:8080:80 nginx# 네트워크 목록
docker network ls
# 특정 네트워크 상세 정보 (연결된 컨테이너, IP 등)
docker network inspect my-network
# 실행 중인 컨테이너의 네트워크 정보
docker inspect --format '{{json .NetworkSettings.Networks}}' <container>docker-compose를 사용하면 같은 파일 내 서비스끼리 자동으로 하나의 bridge 네트워크에 묶입니다.
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
# web에서 db 호스트명으로 postgres에 접근 가능