실제 사용 사례 및 예제
웹 서버 실행
컨테이너 내부에서 포트 80에서 수신 대기하는 Docker 컨테이너 내의 웹 애플리케이션이 있다고 가정합니다. 호스트 머신에서 애플리케이션에 액세스하려면 컨테이너의 포트 80을 호스트의 사용자 지정 포트, 예를 들어 8080으로 매핑할 수 있습니다.
docker run -p 8080:80 my-web-app
이제 호스트 머신에서 http://localhost:8080을 방문하여 웹 애플리케이션에 액세스할 수 있습니다.
데이터베이스 서버 노출
Docker 컨테이너에서 실행 중인 데이터베이스 서버 (예: MySQL) 가 있다면 컨테이너의 데이터베이스 포트 (예: 3306) 를 호스트의 사용자 지정 포트로 매핑할 수 있습니다.
docker run -p 3306:3306 mysql
이렇게 하면 호스트 머신에서 실행 중인 다른 애플리케이션이 호스트의 포트 3306을 사용하여 컨테이너 내의 MySQL 데이터베이스 서버에 연결할 수 있습니다.
여러 포트 매핑
더 복잡한 시나리오에서는 웹 서버, 애플리케이션 서버, 데이터베이스와 같은 서로 다른 구성 요소가 별도의 Docker 컨테이너에서 실행되는 다중 계층 애플리케이션이 있을 수 있습니다. 이러한 구성 요소를 노출하기 위해 여러 포트를 매핑할 수 있습니다.
docker run -p 8080:80 -p 8000:8000 -p 3306:3306 my-app
이렇게 하면 호스트의 포트 8080이 컨테이너의 포트 80(웹 서버), 호스트의 포트 8000이 컨테이너의 포트 8000(애플리케이션 서버), 호스트의 포트 3306이 컨테이너의 포트 3306(데이터베이스 서버) 으로 매핑됩니다.
임의 포트 매핑 사용
호스트 머신의 특정 포트를 지정하지 않고 Docker 가 사용 가능한 포트를 자동으로 할당하도록 할 수 있습니다.
docker run -p 80 my-web-app
이 경우 Docker 는 컨테이너의 포트 80을 호스트 머신의 사용 가능한 포트로 매핑합니다. 할당된 포트는 docker ps 명령을 사용하여 확인할 수 있습니다.
이러한 실제 사용 사례와 예제를 이해함으로써 Docker 의 포트 매핑 기능을 효과적으로 활용하여 컨테이너화된 애플리케이션 및 서비스를 외부 세계에 노출하고 원활한 통신 및 애플리케이션 액세스를 가능하게 할 수 있습니다.