Docker

[도커 알아가기] 3. 도커 네트워크

begong 2025. 1. 16. 03:04
반응형

관련 글 목록

1. 컨테이너 기술

2. 도커와 Docker engine

3. 도커 네트워크

4. 도커 포트포워딩 시 서버 폭파 문제해결

 

지난 글에서 도커의 실행 방식을 알아보았으니, 이제 도커 네트워크는 어떻게 구성되어있는지 알아보겠습니다.

Docker 네트워크의 종류

출처  https://indumathimanivannan.medium.com/docker-network-modes-explained-bridge-host-and-overlay-comparisons-d691857f9d30

  • Bridge Network
    • 기본적인 네트워크 드라이버
    • Docker Daemon이 관리하는 가상의 브리지 네트워크를 사용
    • 컨테이너는 이 네트워크 내에서 IP 주소를 할당받고, 다른 컨테이너와 통신
    • 애플리케이션이 동일한 호스트의 다른 컨테이너와 통신해야 하는 컨테이너에서 실행될 때 일반적으로 사용
  • Host Network
    • 호스트 시스템의 네트워크를 직접 사용 (컨테이너와 Docker 호스트 간의 네트워크 격리를 제거)
  • Overlay Network
    • 여러 Docker 데몬을 서로 연결하여 구성
  • Macvlan Network
    • 컨테이너에 MAC주소를 할당
  • ipvlan Network
    • 사용자에게 IPv4와 IPv6 주소 지정에 대한 완전한 제어권을 제공
  • None Network
    • 컨테이너를 호스트 및 다른 컨테이너로부터 완전히 분리

현재 프로젝트에서는 Bridge Network를 사용중입니다.

문제를 찾기위해 Bridge Network에 대해서 알아보았습니다.

Bridge Network의 구조

출처 :  https://gngsn.tistory.com/137

  • eth0
    • 호스트의 eth0
      • 호스트가 외부와 연결할 때 사용하는 IP가 할당된 호스트 네트워크 인터페이스
      • 호스트 시스템의 네트워크 카드
  • docker0
    • 도커가 설치될 때 기본적으로 구성되는 브릿지
    • veth와 호스트의 eth0 인터페이스를 이어주는 중간다리
    • 내부 컨테이너 간 통신, 외부 통신 시 NAT역할 수행
  • veth (virtual eth)
    • 컨테이너 내부의 IP를 외부와 연결해 주는 역할을 하는 가상 인터페이스
    • 컨테이너가 생성될 때 동시에 생성, conatiner의 eth0인터페이스와 연결되어있음.
    • veth와 호스트의 eth0를 연결시켜야 외부와 통신 가능

Docker 네트워크 설정은 누가 담당하는가?

  • Docker Daemon이 컨테이너를 실행할 때 네트워크 설정을 담당
  • 컨테이너 생성 시 docker-proxy 프로세스를 시작함과 동시에, 호스트에 iptables 규칙을 추가

그렇다면 Bridge모드의 포트포워딩은 어떻게 일어나는가?

도커는 리눅스 커널의 iptables 를 활용하여 포트포워딩을 합니다

docker Daemon이 컨테이너 실행 시 NAT 규칙을 iptables에 등록 합니다.

더불어 docker-proxy 프로세스가 생성됩니다

외부에서 들어온 요청은 iptables 규칙에 따라 docker-proxy를 통해 컨테이너로 이동됩니다.

NAT변환은 docker0 브릿지가 담당합니다.

참고

userland proxy

  • 네트워크 스택을 사용하지 않고 사용자 공간에서 실행되는 프록시
    • userland : 사용자 공간, 커널 공간 외부의 영역
      • 일반적으로 네트워크 작업은 커널 공간에서 처리됨
    • 예) 소프트웨어 방화벽 vpn 등
  • 도커에서 userland proxy
    • 호스트의 포트와 컨테이너의 포트를 연결해주는 프록시 서버
    • 커널공간의 네트워크 스택을 사용하지 않고 사용자공간에서 트래픽을 중계
    • 컨테이너의 포트를 호스트에 바인딩할 때(-p 또는 --publish 옵션 사용 시) 각 포트 매핑마다 docker-proxy 프로세스를 생성

참고문서

[서버] Docker Network 에 대해

Docker Network, 제대로 이해하기 (1)

Docker Network : 호스트와 컨테이너를 위한 네트워크를 구성해보자

Network drivers

Docker 공부 2 - 엔진과 네트워크 - DevLog

166. [Docker] Docker 네트워크 구조 : userland proxy, iptables 및 hairpining

반응형