도커 컨테이너를 실행하면 기본적으로 NAT환경이 적용된다.도커는 NAT 내부망에서 동작하고 공인 IP주소가 아닌 사설 IP 주소가 아닌 사설 IP 주소를 사용하므로 컨테이너 외부(예:인터넷망)에서 내부로의 접속이 불가능하다.
도커 컨테이너를 실행하면 기본적으로 NAT환경이 적용된다.
- 호스트 시스템에 NAT 기능이 구동되며, 도커 컨테이너는 네트워킹을 위해 NAT 내부 망 IP 주소를 할당받게 된다.
도커는 NAT 내부망에서 동작하고 공인 IP주소가 아닌 사설 IP 주소가 아닌 사설 IP 주소를 사용하므로 컨테이너 외부(예:인터넷망)에서 내부로의 접속이 불가능하다.
- 이러한 한계를 극복하기 위해 NAT 환경에서 포트 포워딩(포트 맵핑)이라는 기법이 널리 사용되고 있다.
- 이는 NAT 가 동작하는 라우터 / 게이트웨이의 특정 포트 번호로 유입되는 트래픽을 NAT 내부에서 동작하는 시스템의 특정 포트로 전달해 주는 기법이다.
- 도커 시스템 관점에서 NAT구성을 살펴보면, 도커를 구동하는 호스트 시스템 자체가 NAT 라우터 게이트웨이가 되며, 도커 컨테이너는 NAT 망 내부의 시스템이 된다.
docker run -p "${internalPort : externalPort}/${protocal}"
protocal을 기본적으로 생략하면 tcp로 매핑이 된다.