Docker Network

네트워크 드라이버

  • bridge
  • host
  • none
  • container
  • overlay

아무런 설정을 하지 않고 컨테이너를 생성할 경우 기본적으로 docker0 bridge 사용한다.

veth 인터페이스는 각 Container 마다 생성된다. docker0 인터페이스와 Binding 되어 호스트의 eh0 인터페이스와 이어지며 외부와 통신이 가능하게 된다.


Bridge Network

docker network ls 명령어와 docker network inspect bridge 명렁어를 통해서 확인하기

Gateway 와 Subnet 을 확인할 수 있다.


그렇다면, docker network create --driver bridge {name} 명령어를 통해서 사용자 정의 브리지를 생성하고 적용해보자.

기본 bridge 와는 다르게 172.18.x.x 대역으로 Gateway 와 Subnet 이 잡혀있다.

사용자 정의 브리지를 통해서 컨테이너를 생성해보자.

docker run -it 옵션을 통해서 생성한 컨테이너에 attach 모드로 들어간다.

--net 옵션을 통해서 사용자 정의 브리지를 설정한다.

생성한 ubuntu 컨테이너안에서 ifconfig 명령어를 통해서 172.18.0.2 를 할당받은 것을 확인할 수 있다.


또한 임의로 Subnet, Gateway, Ip range 를 아래와 같이 설정할 수 있다.

--subnet 옵션과 --ip-range 옵션 그리고 --gateway 옵션을 통해서 가능하다.


--net-alias 옵션을 통해서 사용자 정의 브리지에 별칭을 부여할 수 있다.

ip 할당은 라운드 로빈방식이다.

각각의 컨테이너에 172.18.0.2 ~ 4 까지 할당한 것을 확인할 수 있다.


Host Network

호스트 네트워크 환경을 컨테이너에서 동일하게 사용한다. 컨테이너 내부의 Application 을 별도의 port forwarding 없이 바로 서비스가 가능하다.

None Network

아무런 네트워크도 사용하지 않는 것. 컨테이너 외부와의 연결을 하지 않는다.


Container Network

다른 컨테이너의 네트워크 환경을 공유하면 내부 IP를 새로 할당 받지 않으며 호스트에 veth로 시작하는 가상 네트워크 인터페이스도 생성되지 않는다. network_container_2 의 network 와 관련된 사항은 전부 network_container_1 과 동일하게 설정된다.


댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째