[Docker] Network - 컨테이너간 통신

목차

📌 Docker Network 란?

Docker Network는 컨테이너 간 통신을 가능하게 해주는 가상 네트워크입니다.

컨테이너는 독립적인 환경에서 실행되지만, 애플리케이션을 만들다 보면 서로 데이터를 주고받아야 하거나 외부 요청을 받아야 할 일이 많습니다. Docker 네트워크는 이러한 컨테이너간 통신을 가능하게 해주는 역할을 합니다.

🔍 Docker Network 의 종류

Docker는 기본적으로 다음과 같은 네트워크 드라이버들을 제공합니다

드라이버 설명
bridge 기본 드라이버. 컨테이너 간 통신이 가능하며, 같은 호스트에서 작동합니다.
host 컨테이너가 호스트의 네트워크를 그대로 사용합니다. 격리는 없지만 속도는 빠릅니다.
none 네트워크를 사용하지 않도록 설정합니다. 완전한 격리가 필요할 때 사용합니다.
overlay 여러 호스트 간 컨테이너를 연결할 수 있습니다. Docker Swarm에서 유용합니다.
macvlan 컨테이너에 고유한 MAC 주소를 부여해 물리 네트워크처럼 동작시킵니다.

✅ Docker 네트워크 생성

Docker 네트워크를 사용하면 다음과 같은 기능들을 사용할 수 있습니다.

  • 같은 네트워크내 컨테이너 간 이름 기반 통신 가능
  • 자체 서브넷 설정 가능
  • 네트워크 격리를 통해 보안 강화
docker network create \
--driver bridge \
--subnet 192.168.100.0/24 \ # my-bridge 를 이용하는 Docker 는 192.168.100.0/24 내 IP 를 할당 받습니다.
my-bridge

✅ Docker Network 사용

1. 네트워크 생성

Docker 명령어로 생성하는 네트워크는 기본적으로 bridge 네트워크를 사용합니다.

# 사용자 정의 브리지 네트워크 생성
docker network create my-bridge-network

# 네트워크 확인
docker network ls
NETWORK ID     NAME                                                                DRIVER    SCOPE
970c8ca1f098 app_default bridge local
b7cc4195660a bridge bridge local
752114a3f537 cluster4_default bridge local
cefaa7d0f84f discovery-server_msa bridge local
b15c797bd7cb host host local
e30ba0356072 minikube bridge local
1d556958a0e3 monitoring_kafka_network bridge local
c11f235772a0 my-bridge-network bridge local
09369e87d3bf mysql_default bridge local
12bba3372bec none null local
b6805d2acdd3 redis-insight_default bridge local
2e03a529f3f0 spring-cloud bridge local

2. 컨테이너 2개 실행 (같은 네트워크에 연결):

docker run -d --name container1 --network my-bridge-network nginx
docker run -it --name container2 --network my-bridge-network alpine sh

컨테이너2에서 container1 의 이름으로 접속이 가능합니다
👉 같은 네트워크에 연결된 컨테이너는 이름으로 서로 통신 가능하다는 점이 포인트입니다!

# container2 내부에서
ping container1

✅ Docker 네트워크 관련 명령어

명령어 설명
docker network ls 네트워크 목록 보기
docker network inspect <이름> 네트워크 상세 정보 확인
docker network create <이름> 네트워크 생성
docker network rm <이름> 네트워크 삭제
docker network connect <네트워크> <컨테이너> 컨테이너를 네트워크에 연결
docker network disconnect <네트워크> <컨테이너> 연결 해제
Share