도커 컨테이너는 네트워크를 통해 서로 통신하거나 외부와 연결할 수 있습니다. 기본적으로 도커는 bridge라는 네트워크를 사용하며, 추가로 host, none, custom network 등을 설정할 수 있습니다.
이번에는 컨테이너 내부 네트워크 구조와 컨테이너 간 통신 방법을 살펴볼게요.
컨테이너는 기본적으로 **가상 네트워크 인터페이스(veth pair)**를 통해 호스트와 연결됩니다.
p 옵션으로 포트 매핑 필요flowchart LR
subgraph Host["호스트 머신"]
H1["로컬 네트워크 (eth0)"]
DockerDaemon["Docker Daemon"]
subgraph DockerDefaultBridge["Docker 기본 bridge 네트워크"]
C1["컨테이너 A (bridge)"]
C2["컨테이너 B (bridge)"]
end
end
subgraph Internet["🌐 인터넷"]
end
H1 <---> Internet
DockerDaemon <-- NAT ---> Internet
DockerDaemon <-- 브릿지 네트워크 --> DockerDefaultBridge
%% 로컬 호스트와 컨테이너 관계
H1 <-- PortMapping(-p) --> C1
H1 <-- PortMapping(-p) --> C2
%% 컨테이너간 직접 연결은 불가
C1 -.-x C2
%% 커스텀 네트워크 생성 시
subgraph CustomNet["Custom Network (my-net)"]
C3["컨테이너 C (my-net)"]
C4["컨테이너 D (my-net)"]
end
C3 <-- name-based DNS --> C4
H1 <-- PortMapping(-p) --> C3
H1 <-- PortMapping(-p) --> C4
✅ 핵심 요약
p로 포트 노출 필요my-db → DNS 자동 인식)