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
- docker0
- Docker 설치시 기본적으로 제공되는 브리지 네트워크
- 기본적으로 172.17.0.1 주소를 갖는다.
- docker0 브리지는 소프트웨어적인 스위치 방식으로 동작한다.
- DHCP로 연결된 container에 사전에 정의된 IP pool 을 할당한다.
- vethxxxxxx
- OSI 7계층 서비스 모델의 2계층 서비스로, container 내부에 제공되는 network interface eht0와 한쌍으로 제공되어 docker0와 가상의 터널링 네트워크를 제공한다.
- eth0
- Docker container에 생성되는 기본 network interface명으로 docker0를 게이트웨이로 사용한다.
- 순차적으로 IP Address를 할당 받거나 사용자가 동일 대역의 IP Address를 지정할 수 있다.
Docker Network 종류
- docker network ls 명령으로 Docker Network 목록을 확인할 수 있다.
- Bridge Network
- host와 다른 별도의 가상네트워크를 사용한다.
- 포트포워딩으로 외부 network에 연결할 수 있다.
- container 생성시, network 옵션을 설정하지 않으면 적용되는 네트워크다.
- Host Network
- container의 network 환경을 host의 network환경과 동일하게 사용한다.
- 포트포워딩 없이 container를 외부 network에 연결할 수 있다.
- None Network
- network를 사용하지 않고 local network만 사용한다.
- host 나 외부 network 연결이 모두 단절된다.
- container 생성시 포트포워딩을 해도 적용되지 않는다.
Docker Network 정보 내용
- docker info | grep Network 명령의 결과내용 설명
- bridge
- 기본 network driver로 container를 별도의 네트워크 구성없이 독립적으로 실행하는 경우 사용한다.
- bridge 모드는 동일 host상의 Docker container에만 적용한다.
- host
- container와 host간 네트워크 격리를 제거하고 host 네트워크를 직접 사용한다.
- container 생성시, 별도의 연결(포트포워딩)없이 host port를 이용하여 바로 서비스할 수 있다.
- overlay
- 다중 host docker server를 이용한 cluster(Docker swarm) 등을 이용할 경우 docker daemon간 연결을 통해 container 서비스를 수행한다.
- container간 운영체제 수준의 라우팅을 사용하지 않아도 된다.
- Docker swarm(docker cluster) 구축시 host와 host간 container의 연결에 사용한다.
- macvlan
- 물리적 network에 container의 MAC 주소로 직접 연결할때 사용한다.
- docker daemon은 MAC 주소별로 트래픽 라우팅한다.
- none
- container가 network를 사용하지 않도록 설정한다.
- none network로 설정하면 network interface는 loInterface(loopback adaptor)만 존재하게 된다.
- container network
- container의 network namespace stack(IP address, MAC 주소 등)을 공유하여 같이 사용할 수 있게 한다.
- 사용자 정의 네트워크
- docker network create 명령을 통해 사용자가 직접 생성한 Docker network다.