도커 컨테이너는 네트워크를 통해 서로 통신하거나 외부와 연결할 수 있습니다. 기본적으로 도커는 bridge라는 네트워크를 사용하며, 추가로 host, none, custom network 등을 설정할 수 있습니다.

이번에는 컨테이너 내부 네트워크 구조컨테이너 간 통신 방법을 살펴볼게요.


🌐 컨테이너 내부 네트워크는 어떻게 구성될까?

컨테이너는 기본적으로 **가상 네트워크 인터페이스(veth pair)**를 통해 호스트와 연결됩니다.


🖼️ 도커 네트워크 구조 (Mermaid 다이어그램)

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

핵심 요약


🔄 컨테이너 간 통신 방법

  1. 네트워크를 따로 지정하지 않으면 → 기본 bridge 네트워크 사용
  2. 커스텀 네트워크 생성 후 실행하면 → 이름 기반 DNS 지원