서론

- 도커 컨테이너는 기본적으로 "네트워크 격리(ns 분리)"를 통해 서로 독립된 네트워크 스택(IP, 포트 공간, 라우팅 테이블)을 할당

- 단일 Docker 호스트(OS)에서 여러 컨테이너들이 각각 고유 IP주소를 받으며, 네트워크 유형에 따라 서로 다른 통신 경로와 격리 수준을 확보

Container Network 구조

image.png

Network Driver

Bridge 네트워크

image.png

이론

동작 방식

1. 컨테이너 내부에 eth0 생성 -> veth 가상 NIC쌍(vethXXX)이 함께 생성

2. veth의 한쪽 끝은 컨테이너 내부, 다른 한쪽은 호스트의 브릿지에 연결

3. 브릿지는 여러 컨테이너를 Layer2(스위치처럼)로 붙임, 로컬 통신과 외부 라우팅 지원

4. 호스트 네트워크 인터페이스(ex. enp0s3, eth0)와 NAT(iptables)로 외부와 통신 가능
-----
if 컨테이너들끼리:
 - 브릿지 네트워크 내부에서 직접 IP로 통신 가능(같은 브로드캐스트라 생각)
 - 외부에서 컨테이너까지는 포트 포워딩 필요

Host 네트워크

여기서 eth0는 호스트 네트워크

여기서 eth0는 호스트 네트워크

이론