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
아무런 네트워크도 사용하지 않는 것. 컨테이너 외부와의 연결을 하지 않는다.
다른 컨테이너의 네트워크 환경을 공유하면 내부 IP를 새로 할당 받지 않으며 호스트에 veth로 시작하는 가상 네트워크 인터페이스도 생성되지 않는다. network_container_2 의 network 와 관련된 사항은 전부 network_container_1 과 동일하게 설정된다.
댓글
댓글 쓰기