- 도커 네트워크가 무엇인지 이해한다.
- 도커 네트워크 타입에 무엇이 있는지 이해한다.
Docker Network#
- Docker는 컨테이너 간, 호스트, 외부 네트워크와 통신을 하기위한 네트워크 시스템을 포함하고 있다.
Docker Network 타입#
bridge#
- 컨테이너 끼리 서로 연결하고 외부 네트워크와 분리하는 네트워크
- 동일한 bridge 네트워크 내의 컨테이너는 IP 주소 또는 컨테이너 이름을 사용해서 통신할 수 있다.
- 컨테이너와 호스트 사이에 소프트웨어 기반의 bridge를 만들어준다.
- 기본적으로 아웃바운드 트래픽은 허용하지만, 인바운드 트래픽은 허용하지 않는다.
- port publish 를 통해서 특정 포트로의 인바운드 트래픽을 허용해준다.
- 예)
-p 8080:80
: 호스트의 8080 포트를 컨테이너의 80 포트로 매핑
host#
- 호스트의 네트워크 스택과 분리되지 않고 공유하는 네트워크
- host 네트워크에 속한 컨테이너는 IP 주소를 할당받지 않고, 호스트의 네트워크 인터페이스에 포트가 직접 바인딩된다.
- 현재 컨테이너가 80 포트에 바인딩 된다면
<you_host_ip>:80
로 바인딩 되었다고 볼 수 있다.
overlay#
- 여러 호스트에 걸쳐 있는 분산 네트워크
- OS 수준의 라우팅 지원 없이도 모든 호스트에서 실행 중인 컨테이너끼리 통신할 수 있다.
- 도커 스웜 클러스터를 위한 네트워크이지만, 서로 직접 접촉해야 하는 컨테이너가 있는 두 개의 별도 Docker 엔진 인스턴스를 실행하는 경우에도 사용할 수 있다.
- overlay에 속한 서비스는 서비스 이름으로 사용해 호출하면 두 가지 방식 중 하나로 로드 밸런싱이 이루어진다.
- VIP 방식: VIP를 할당하고 로드 밸런싱. 기본값.
- DNSRR(DNS 라운드 로빈): 서비스 이름에 대한 DNS 쿼리가 IP 주소 목록을 반환하고 클라이언트가 이 중 하나에 직접 연결하도록 DNS를 설정한다.
Docker Swarm#
- Docker Swarm은 아래 3가지의 주요 네트워크를 사용한다.
- overlay: 스웜에 참여하는 docker 데몬 간 통신을 관리한다.
- ingress: overlay 타입 네트워크로, 서비스 노드 간 로드 밸런싱을 용이하게 해주는 네트워크다. publish 된 포트로 요청을 받으면 로드 밸런싱이 이루어진다.
- docker_gwbridge: overlay 네트워크(ingress 포함)를 개별 docker 데몬의 물리적 네트워크에 연결하는 bridge 네트워크

ipvlan#
- 컨테이너에 할당된 IPv4, IPv6 주소, 레이어 2, 3 VLAN 태깅 및 라우팅 제어를 제공하는 네트워크.
- 컨테이너화된 서비스를 기존 물리 네트워크와 통합할 때 유용하다.
- IPvLAN 네트워크에는 자체 인터에피스가 할당되므로 bridge 네트워크에 비해 성능이 좋다.
macvlan#
- 컨테이너에 고유한 MAC 주소를 할당하는 네트워크.
- 이 네트워크를 사용하려면 호스트의 물리적 인터페이스 중 하나를 가상 네트워크 전용으로 지정해야된다.
언제 어떤 타입을 사용하면 될까?#
- bridge:
- 대부분의 시나리오
- 네트워크의 컨테이너는 자체 IP 주소와 DNS 이름을 사용하여 통신할 수 있다.
- 호스트의 네트워크에 액세스할 수 있으므로 인터넷과 LAN에 연결할 수 있다.
- host:
- 호스트의 인터페이스에 직접 바인딩하고 네트워크 격리에 대해 걱정하지 않을 때 적합하다.
- overlay:
- 서로 다른 호스트에 있는 컨테이너가 직접 통신해야 할 때 적합하다.
- macvlan:
- 네트워크 트래픽을 모니터링하는 애플리케이션 실행하는 경우처럼 컨테이너가 호스트의 네트워크에 물리적 장치로 표시되어야 하는 상황에 유용하다.
- ipvlan:
- 컨테이너 IP 주소, 태그 및 라우팅에 대한 특정 요구 사항이 있는 경우의 고급 옵션이다.
참고 자료#
comments powered by