도커의 IP할당 방식
도커에서는 기본적으로 NAT방식의 주소할당을 합니다. 보통 컨테이너별로 172.17.0.x 와 같은 IP를 할당 받습니다. 물리 IP를 받고 싶으면 docker network create를 사용해서 연결해야 합니다. 문제가 되는 경우는 도커가 리눅스에 네이티브로 설치되지 않고 윈도우나 맥OS처럼 버추얼박스와 같은 하이퍼바이저기반으로 설치된 경우입니다. 이때는 버추얼박스가 자체적으로 NAT로 할당 (보통 10.0.2.15/윈도우의경우 192.168.99.100) 되어 도커의 가상머신에 IP를 할당하고 또다시 도커가 컨테이너에게 가상주소(172.17.0.x)를 할당한 경우입니다. 이때 도커의 -p 옵션으로 컨테이너의 포트를 버추얼박스의 주소로 포워딩시키면 내부 시스템에서는 접속이 됩니다. 문제는 외부 네트워크에서 접속하려면 버추얼박스에 다시 포트포워딩 설정을 해줘야 외부에서 접속이 가능합니다. 예를 들면 아파치 웹서버나 톰캣을 컨테이너로 띄웠다면 발생하는 문제라고 할 수 있습니다. 결론적으로 윈도우에 버추얼박스를 NAT로 설치한 도커를 사용하는 경우에는 2중으로 포트포워딩 작업을 해줘야 합니다. (실제 IP → 10.0.2.15나 192.168.99.100 → 172.17.0.x) |