Cloud/Docker

Docker) Docker Network 알아보기

Adım Kim 2022. 10. 5. 23:03

Docker Network

  • docker container 및 서비스는 Docker Network를 통해 격리된 container간 network연결뿐만 아니라 Docker 외의 다른 application 워크로드와도 연결 가능하다.
  • Docker Network의 하위 시스템 연결을 위해 Docker Network Driver를 사용하여 상호통신한다.
  • 가상 이더넷 브리지(virtual ethernet bridge) 네트워크인 docker0가 격리된 container들과 상호간 통신을 제공한다.
  • 기본적으로 모든 container는 docker0 브리지에 연결하여 172.17.0.0/16 CIDR 범위로 IP주소를 할당한다.


Network Interface

  1. docker0
    • Docker 설치시 기본적으로 제공되는 브리지 네트워크
    • 기본적으로 172.17.0.1 주소를 갖는다.
    • docker0 브리지는 소프트웨어적인 스위치 방식으로 동작한다.
    • DHCP로 연결된 container에 사전에 정의된 IP pool 을 할당한다.
  2. vethxxxxxx
    • OSI 7계층 서비스 모델의 2계층 서비스로, container 내부에 제공되는 network interface eht0와 한쌍으로 제공되어 docker0와 가상의 터널링 네트워크를 제공한다.
  3. eth0
    • Docker container에 생성되는 기본 network interface명으로 docker0를 게이트웨이로 사용한다.
    • 순차적으로 IP Address를 할당 받거나 사용자가 동일 대역의 IP Address를 지정할 수 있다.


Docker Network 종류

  1. docker network ls 명령으로 Docker Network 목록을 확인할 수 있다.
  2. Bridge Network
    • host와 다른 별도의 가상네트워크를 사용한다.
    • 포트포워딩으로 외부 network에 연결할 수 있다.
    • container 생성시, network 옵션을 설정하지 않으면 적용되는 네트워크다.
  3. Host Network
    • container의 network 환경을 host의 network환경과 동일하게 사용한다.
    • 포트포워딩 없이 container를 외부 network에 연결할 수 있다.
  4. None Network
    • network를 사용하지 않고 local network만 사용한다.
    • host 나 외부 network 연결이 모두 단절된다.
    • container 생성시 포트포워딩을 해도 적용되지 않는다.


Docker Network 정보 내용

  1. docker info | grep Network 명령의 결과내용 설명
  2. bridge
    • 기본 network driver로 container를 별도의 네트워크 구성없이 독립적으로 실행하는 경우 사용한다.
    • bridge 모드는 동일 host상의 Docker container에만 적용한다.
  3. host
    • container와 host간 네트워크 격리를 제거하고 host 네트워크를 직접 사용한다.
    • container 생성시, 별도의 연결(포트포워딩)없이 host port를 이용하여  바로 서비스할 수 있다.
  4. overlay
    • 다중 host docker server를 이용한 cluster(Docker swarm) 등을 이용할 경우 docker daemon간 연결을 통해 container 서비스를 수행한다.
    • container간 운영체제 수준의 라우팅을 사용하지 않아도 된다.
    • Docker swarm(docker cluster) 구축시 host와 host간 container의 연결에 사용한다.
  5. macvlan
    • 물리적 network에 container의 MAC 주소로 직접 연결할때 사용한다.
    • docker daemon은 MAC 주소별로 트래픽 라우팅한다.
  6. none
    • container가 network를 사용하지 않도록 설정한다.
    • none network로 설정하면 network interface는 loInterface(loopback adaptor)만 존재하게 된다.
  7. container network
    • container의 network namespace stack(IP address, MAC 주소 등)을 공유하여 같이 사용할 수 있게 한다.
  8. 사용자 정의 네트워크
    • docker network create 명령을 통해 사용자가 직접 생성한 Docker network다.