도커에서 특정 네트워크 인터페이스에 binding 하여 실행하기

by chlee


SoftwarePosted on 2020-07-23 14:32:12


도커 이미지를 실행할 시 네트워크 방식을 선택하지 않으면 기본적으로 제공되는 docker0 브릿지로 설정되고, 호스트 네트워크와는 별개로 ip 가 할당된다. 호스트 네트워크의 인터페이스에 바인드 시키기 위해서는 별도의 설정이 필요한데, 아래 설정을 적용하여 바인딩이 가능하다.

브릿지 인터페이스 생성

ifconfig 명령어를 입력하여 인터페이스 명을 확인한다 (e.g., eth0). 이 글에서는 enp70s0 를 사용한다.

ip link add dev eth1 link enp70s0 type macvlan
ip link set eth1 up
dhclient eth1 -v

도커에 할당할 네트워크 및 ip 주소를 설정한다. 이 글에서는 네트워크명을 docker-bridge 로 가정하였다. 192.168.21.0 네트워크를 사용하고, 실제 할당할 주소 범위는 192.168.21.1 - 192.168.21.254 로 가정하였다.

 docker network create -d macvlan --subnet=192.168.21.0/24 --ip-range=192.168.21.0/25 --gateway=192.168.21.1 -o parent=enp70s0 docker-bridge
 docker run -it --net docker-bridge ~~~

도커 실행 시 --net docker-bridge 로 하여 실행하면 해당 ip 로 할당되어 실행된다.

References

https://forums.docker.com/t/how-to-set-up-a-container-just-like-a-virtual-machine-in-bridge-mode-meaning-the-container-gets-its-own-external-ip/41831/45