도커는 기본적으로 가상화 기술을 사용하여 호스트 시스템에서 격리된 환경인 컨테이너를 실행합니다. 컨테이너는 기본적으로 호스트 시스템과 동일한 네트워크 인터페이스를 공유하며, 호스트의 IP 주소를 공유하여 통신을 수행합니다. 이로 인해 컨테이너 각각이 고유한 IP 주소를 가지는 것은 아닙니다.
그러나 도커에서 컨테이너마다 개별 IP 주소를 할당하고 싶다면 다음과 같은 방법들을 고려할 수 있습니다:
Docker 네트워크를 사용하여 개별 IP 할당:
도커는 네트워크 드라이버를 통해 컨테이너 간 통신을 제어합니다. "bridge" 네트워크 드라이버를 사용하여 컨테이너마다 고유한 IP 주소를 할당할 수 있습니다. 이를 위해 다음과 같은 절차를 수행합니다:
가. 사용자 정의 브리지 네트워크 생성:
docker network create --driver bridge my_custom_bridge
나. 컨테이너 실행 시 네트워크를 지정하여 해당 네트워크에 연결:
docker run --network=my_custom_bridge --ip 172.18.0.2 -d my_image1
docker run --network=my_custom_bridge --ip 172.18.0.3 -d my_image2
이렇게 하면 두 컨테이너는 각각 172.18.0.2와 172.18.0.3 IP 주소를 가집니다.
Macvlan 네트워크 드라이버 사용:
Macvlan은 호스트의 물리적 인터페이스에 가상 인터페이스를 생성하여 컨테이너에 직접 IP 주소를 할당하는 방법입니다. 이렇게 하면 컨테이너가 호스트 시스템과 동일한 물리적 네트워크에 연결되며 독립적인 IP 주소를 가집니다.
사용자 정의 Macvlan 네트워크를 만들고 컨테이너를 실행하는 예시:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan_network
docker run --network=my_macvlan_network --ip 192.168.1.2 -d my_image1
docker run --network=my_macvlan_network --ip 192.168.1.3 -d my_image2
이렇게 하면 두 컨테이너는 각각 192.168.1.2와 192.168.1.3 IP 주소를 가집니다.
IP 주소 할당 방법은 상황에 따라 다를 수 있으며, 특정 상황에 맞게 적절한 방법을 선택하여 사용하시면 됩니다. 각 방법은 장단점이 있으므로 필요에 맞게 선택하시기 바랍니다.