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)
'Server > Docker' 카테고리의 다른 글
| [Docker] Docker Container 에서 Azure CLI 실행 #1 (39) | 2024.12.03 |
|---|---|
| [Docker] Portainer GUI 로 Docker 운영(볼륨 및 컨테이너 생성) #3 (32) | 2024.11.27 |
| [Docker] Portainer GUI 로 Docker 운영(접속 및 Image 생성) #2 (30) | 2024.11.25 |
| [Docker] Docker Hub 에서 Portainer Image Pull Container Run #1 (17) | 2024.11.15 |
| [Docker] Docker Hub, File, Image, Container 란? #4 (1) | 2024.11.06 |