Docker 포트 매핑 (Port Mapping)
Docker에서 포트 매핑은 컨테이너 내부에서 실행 중인 서비스의 포트와 호스트 컴퓨터(Docker가 설치된 머신)의 포트를 연결하는 중요한 기능입니다.
포트 매핑 왜 필요한가?
Docker 컨테이너는 기본적으로 격리된 환경에서 실행됩니다.
즉, 컨테이너 내부에 웹 서버가 80번 포트에서 동작하더라도, 외부에서는 이 포트에 직접 접근할 수 없습니다.
컨테이너는 자체적인 IP 주소를 가지고 있으며, 호스트 컴퓨터와는 다른 네트워크 환경에 있습니다.
포트 매핑의 역할
포트 매핑은 컨테이너의 특정 포트를 호스트 컴퓨터의 특정 포트로 터널링(tunneling)하는 역할을 합니다.
이를 통해 외부 사용자는 호스트 컴퓨터의 포트를 통해 컨테이너 내부의 서비스에 접근할 수 있게 됩니다.
간단한 예시
Nginx 웹 서버를 실행하는 컨테이너를 생각해봅시다.
Nginx는 기본적으로 80번 포트에서 동작합니다.
이 컨테이너에 외부에서 접근할 수 있도록 하려면 다음과 같이 포트 매핑을 설정할 수 있습니다.
Bash
docker run -p 8080:80 nginx
-p
:
포트 매핑 옵션8080
:
호스트 컴퓨터의 포트로 외부에서http://[호스트 IP]:8080
으로 접속80
:
컨테이너 내부의 포트로 Nginx가 이 포트에서 대기nginx
:
사용할 Docker 이미지 이름
호스트 컴퓨터의 8080번 포트로 들어오는 모든 네트워크 요청은 Docker에 의해 컨테이너의 80번 포트로 전달됩니다.
이로써 외부 사용자는 http://localhost:8080
(만약 로컬에서 실행했다면)으로 접속하여 컨테이너 내부의 Nginx 웹 서버에 접근할 수 있게 됩니다.
요약
개념 | 설명 |
컨테이너 포트 | 컨테이너 내부에서 서비스가 실제로 사용하고 있는 포트 (예: Nginx의 80번 포트) |
호스트 포트 | 컨테이너에 접근하기 위해 외부에서 사용하는, 호스트 컴퓨터의 포트 |
포트 매핑 | [호스트 포트]:[컨테이너 포트] 형태로 두 포트를 연결하는 과정 |