[파이썬] 도커 컨테이너와 호스트 간 포트 매핑

도커(Docker)는 애플리케이션을 컨테이너화하여 배포하고 실행할 수 있는 오픈 소스 플랫폼입니다. 도커는 컨테이너를 사용하여 애플리케이션을 격리하고, 환경에 구애받지 않고 일관된 실행 환경을 제공합니다. 이를 통해 애플리케이션의 개발, 배포, 관리를 간편하게 할 수 있습니다.

도커에서는 컨테이너와 호스트 간에 포트 매핑을 통해 애플리케이션을 외부로 노출시킬 수 있습니다. 이를 통해 호스트의 특정 포트와 컨테이너 내부의 포트를 연결하여 외부에서 컨테이너에 접근할 수 있게 됩니다.

포트 매핑의 필요성

도커 컨테이너를 실행하면 기본적으로 컨테이너 내부의 포트와 호스트의 루프백(loopback) 주소로 매핑됩니다. 이렇게 되면 컨테이너 내부에서는 정상적으로 애플리케이션에 접근할 수 있지만, 외부 네트워크에서는 컨테이너에 접근할 수 없게 됩니다.

예를 들어, 웹 애플리케이션을 컨테이너로 실행하고 싶을 때, 컨테이너 내부에서는 애플리케이션에 접근할 수 있지만, 외부에서는 웹 브라우저를 통해 접근할 수 없게 됩니다. 따라서 호스트의 특정 포트와 컨테이너 내부의 포트를 연결하여 외부에서도 애플리케이션에 접근할 수 있어야 합니다.

포트 매핑의 설정

도커에서 포트 매핑을 설정하려면 docker run 명령어를 사용해야 합니다. 아래의 예제는 도커 컨테이너를 실행하면서 호스트의 8080 포트와 컨테이너의 80 포트를 매핑하는 방법을 보여줍니다.

docker run -d -p 8080:80 nginx

위의 명령어를 실행하면 호스트의 8080 포트로 오는 모든 요청을 컨테이너의 80 포트로 전달합니다. 따라서 웹 브라우저에서 http://localhost:8080을 입력하면 컨테이너 내부에서 실행중인 Nginx 웹 서버에 접근할 수 있습니다.

포트 매핑 확인

도커 컨테이너가 정상적으로 포트 매핑이 되었는지 확인하려면 docker ps 명령어를 사용합니다. 아래의 예제는 현재 실행 중인 도커 컨테이너의 상태를 확인하는 명령어입니다.

docker ps

이 명령어를 실행하면 다음과 같은 결과를 볼 수 있습니다.

CONTAINER ID   IMAGE   COMMAND                  PORTS                   NAMES
abcdef123456   nginx   "nginx -g 'daemon of…"   0.0.0.0:8080->80/tcp   my-nginx

PORTS 열에서 0.0.0.0:8080->80/tcp와 같이 표시되어 있는 경우, 호스트의 8080 포트와 컨테이너의 80 포트가 매핑되어 있다는 의미입니다.

마무리

도커 컨테이너와 호스트 간의 포트 매핑은 애플리케이션을 외부에서 접근하기 위해 필수적입니다. 포트 매핑을 설정하고 확인하는 방법에 대해 알아보았습니다. 이를 통해 도커를 이용한 애플리케이션 실행과 관리에 더욱 편리함을 누릴 수 있을 것입니다.