포스트

Docker - Network

Docker Network

  • 도커는 컨테이너가 시작할 때 내부 IP (private ip)를 새로 할당한다.
    • 내부 IP는 도커가 설치된 호스트 내에서만 사용할 수 있다.
  • 컨테이너가 시작될 때 호스트에 veth virtual ethernet 이라는 네트워크 인터페이스를 생성한다.
    • veth 인터페이스는 도커가 컨테이너에 외부와의 네트워킹이 가능하도록 생성한 가상 네트워크 인터페이스이다.
    • veth 인터페이스는 호스트가 가지고 있는 eth0, eth1 등과 연결되어있다.


Docker Network Driver

bridge

  • container 기본 네트워크
    • 컨테이너 생성 시 기본적으로 bridge 네트워크에 연결되어 외부와 통신이 가능해진다.
  • veth 인터페이스와 연결되어 호스트의 네트워크 인터페이스 (ex. eth0, eth1)와 통신
    • 동일 호스트 내에서 컨테이너 간 통신 가능

ex

1
docker network create --driver bridge {NETWORK_NAME}


host

  • 컨테이너가 호스트의 네트워크 스택을 공유
  • 자체 IP를 가지지 않고 호스트의 네트워크를 사용한다.
  • 성능면에서 좋지만 보안에 유의

ex

1
docker run --network host {NETWORK_NAME}


overlay

  • 여러 호스트 간의 컨테이너 통신
  • Docker Swarm 모드에서 사용
  • 암호화된 네트워크 제공

ex

1
docker network create --driver overlay {NETWORK_NAME}


Macvlan

  • 컨테이너에 물리적 네트워크와 같은 방식으로 IP 주소 할당
  • 별도의 네트워크 장치처럼 동작하며 네트워크 성능이 중요한 경우 유용

ex

1
2
3
4
5
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
{NETWORK_NAME}


none

  • 네트워크 없음
  • 완전한 네트워크 격리

ex

1
docker network create --driver bridge {NETWORK_NAME}


custom plugins

  • 사용자 정의 네트워크 솔루션 통합
  • Open vSwitch, Weave, Calico, Flannel과 같은 네트워크 솔루션을 사용



명령어

네트워크 목록 조회

1
docker network ls

응답 값

1
2
3
4
NETWORK ID     NAME      DRIVER    SCOPE
d1d050ccc525   bridge    bridge    local
b2185b57aed4   host      host      local
bf8d7a6107a4   none      null      local


네트워크 상세 조회

1
docker network inspect {NETWORK_NAME}


네트워크 생성

1
docker network create --driver {DRIVER_TYPE} {NETWORK_NAME}
  • --driver 옵션을 생략하면 bridge 드라이버로 생성된다.


컨테이너에 네트워크 할당

1
docker network connect {NETWORK_NAME} {CONTAINER ID or NAME}


컨테이너에 할당된 네트워크 끊기

1
docker network disconnect {NETWORK_NAME} {CONTAINER ID or NAME}




참고한 사이트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.