네트워크 드라이버

네트워크 드라이버 — 컨테이너가 통신하는 방식 고르기

컨테이너끼리 또는 호스트와 통신해야 하는 순간이 오면, '어떤 네트워크를 쓸까'가 고민되기 시작해요. 도커는 네트워킹 하위 시스템을 드라이버로 플러그인처럼 교체할 수 있게 설계했어요. 기본으로 제공되는 드라이버 몇 가지를 알면, 상황에 맞는 네트워크를 골라 쓸 수 있어요.

출처: Network drivers | Docker Documentation

본문

드라이버 종류 한눈에 보기

도커의 네트워킹 하위 시스템은 드라이버를 기반으로 동작해요. 기본으로 제공되는 드라이버는 다음과 같아요.

  • bridge — 기본 네트워크 드라이버예요. 드라이버를 지정하지 않으면 만들게 되는 네트워크 유형이죠. 같은 호스트에 있는 다른 컨테이너와 통신해야 하는 애플리케이션에서 흔히 써요.
  • host — 컨테이너와 도커 호스트 사이의 네트워크 격리를 제거하고 호스트의 네트워킹을 그대로 사용해요.
  • overlay — 여러 도커 데몬을 서로 연결해서, 스웜 서비스와 컨테이너가 노드 간에 통신할 수 있게 해줘요. OS 수준의 라우팅을 할 필요가 없어지죠.
  • ipvlan — IPv4와 IPv6 주소 지정을 모두 완전히 제어할 수 있게 해줘요. L2 VLAN 태깅과 IPvlan L3 라우팅까지 제어할 수 있어서, 언더레이 네트워크 통합을 원하는 운영자에게 적합해요.
  • macvlan — 컨테이너에 MAC 주소를 부여해서, 네트워크에서 물리 장치처럼 보이게 해줘요. 도커 데몬이 MAC 주소로 컨테이너에게 트래픽을 라우팅하죠. 물리 네트워크에 직접 연결되길 기대하는 레거시 애플리케이션에 종종 좋은 선택이에요.
  • none — 컨테이너를 호스트와 다른 컨테이너로부터 완전히 격리해요. 다만 none은 스웜 서비스에는 사용할 수 없어요.
  • 네트워크 플러그인(Network plugins) — 기본 드라이버 외에 서드파티 네트워크 플러그인을 설치·사용할 수도 있어요.

드라이버별 요약

  • 기본 bridge 네트워크는 특별한 네트워킹 능력이 필요 없는 컨테이너를 실행할 때 좋아요.
  • 사용자 정의 bridge 네트워크는 같은 도커 호스트의 컨테이너들이 서로 통신하게 해줘요. 보통 공통 프로젝트나 컴포넌트에 속한 여러 컨테이너를 위한 격리된 네트워크를 정의해요.
  • host 네트워크는 호스트의 네트워크를 컨테이너와 공유해요. 이 드라이버를 쓰면 컨테이너의 네트워크가 호스트로부터 격리되지 않아요.
  • overlay 네트워크는 서로 다른 호스트에서 실행되는 컨테이너가 통신해야 할 때 가장 적합해요.
  • ipvlan은 macvlan과 비슷하지만, 컨테이너에 고유 MAC 주소를 부여하지 않아요. 네트워크 인터페이스나 포트에 부여할 수 있는 MAC 주소 수에 제한이 있을 때 ipvlan을 고려해보세요.
  • 서드파티 네트워크 플러그인은 도커를 특수한 네트워크 스택과 통합할 수 있게 해줘요.

각 드라이버 페이지에는 상세한 설명, 설정 옵션, 실습 예제가 있으니 필요한 드라이버를 골라 자세히 살펴보면 돼요.

더 알아보기