Server/Docker

[Docker] Docker Network 기초 #1

Co + X-factor 2025. 7. 28. 17:36

Docker는 애플리케이션을 빠르고 간편하게 배포할 수 있는 강력한 도구입니다. 그러나 실제 서비스 환경에서는 단순히 컨테이너를 띄우는 것을 넘어 컨테이너 간의 통신, 호스트와의 연결, 외부 네트워크 접근까지 고려해야 합니다.

이 모든 통신의 기반이 되는 것이 바로 "Docker Network" 구조입니다.

초보자라면 대부분 docker run만으로 컨테이너를 실행하고 끝내기 쉽지만, 실제로는 Docker가 내부적으로 다양한 가상 네트워크 인터페이스를 생성하여 각 컨테이너의 네트워크를 분리하고 연결합니다.

 

eth0 (host) host VM에서 실제 연결된 가상 네트워크 어댑터
외부와 통신하는 역할
docker0 (host) docker가 생성한 기본 가상 브리지 네트워크
모든 docker container는 "docker0"에 연결되며,Gateway 역할
ex) 172.17.0.1
veth xxx (virtual ethernet) eth0 (container) ↔ docker0 (host)를 연결하는 가상 이더넷 인터페이스이며, eth0 (container)와 한쌍을 이루며 연결됨
eth0 (container) docker container의 주요 네트워크 인터페이스 "docker0" 브리지에서 할당한 IP를 가짐
ex) 172.17.0.2
lo (Loopback Interface) 자기 자신을 가르키는 인터페이스 일반적으로 "127.0.0.1"을 사용하여 내부 통신에서 사용

 



Port configuration DNAT          --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 to:172.17.0.2:9000

 

 

 

내부 → 외부 MASQUERADE (출발지 IP 변경 - NAT)
외부 → 내부 DNAT (도착지 IP 변경 - 포트포워딩)
도커 컨테이너 간 통신 docker0 브리지를 통한 직접 통신
인터넷 연결 가능 POSTROUTING → MASQUERADE 덕분



next > Docker 네트워크 타입들 (bridge, host, none, overlay, macvlan)