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

도커(Docker)는 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼으로, 애플리케이션과 필요한 환경을 패키징하여 이식성과 확장성을 높여줍니다. 도커를 사용하면 애플리케이션을 호스트 환경에서 격리된 컨테이너로 실행할 수 있으며, 이를 통해 애플리케이션의 관리와 배포가 간편해집니다.

한 가지 중요한 개념 중 하나는 도커 컨테이너와 호스트 간 포트 매핑입니다. 이는 도커 컨테이너 내부에서 실행 중인 애플리케이션의 포트를 호스트 시스템의 포트와 연결하는 것을 말합니다. 이를 통해 호스트 시스템의 다른 프로세스나 네트워크로부터 접근 가능한 컨테이너를 생성할 수 있습니다.

Python으로 간단한 도커 컨테이너와 호스트 간 포트 매핑을 설정하는 방법에 대해 알아보겠습니다. 우선, 도커가 설치되어 있어야 합니다.

필요한 패키지 설치

docker 패키지를 사용하여 도커와 통신할 수 있도록 하겠습니다. 설치 명령은 다음과 같습니다:

pip install docker

호스트와 포트 설정

우리의 목표는 호스트 시스템의 특정 포트를 도커 컨테이너 내부의 애플리케이션 포트와 매핑하는 것입니다. 이를 위해 호스트와 포트를 설정해야 합니다. 예를 들어, 호스트의 포트 5000을 도커 컨테이너 내부의 포트 8000에 매핑하고자 한다면 다음과 같이 설정합니다:

host_port = 5000
container_port = 8000

도커 컨테이너 생성 및 포트 매핑

이제 호스트와 포트를 설정했으니, 실제 도커 컨테이너를 생성하고 포트 매핑을 설정해보겠습니다. 다음 코드를 사용합니다:

import docker

client = docker.from_env()

# 도커 이미지 다운로드
image = client.images.pull('python:3.9-slim')

# 도커 컨테이너 생성
container = client.containers.create(
    image,
    command='python -m http.server 8000',
    ports={f'{container_port}/tcp': host_port}
)

# 도커 컨테이너 실행
container.start()

위 코드에서 python -m http.server 8000은 도커 컨테이너 내부에서 실행되는 간단한 HTTP 서버를 나타냅니다. 이 코드를 실행하면 도커 컨테이너가 생성되고 호스트의 포트 5000과 도커 컨테이너의 포트 8000이 매핑됩니다.

접속 확인

이제 브라우저나 curl 등을 사용하여 호스트 시스템의 포트로 액세스할 수 있습니다:

curl http://localhost:5000

위 명령을 실행하면 도커 컨테이너 내부의 애플리케이션에 접근할 수 있습니다.

이처럼 도커 컨테이너와 호스트 간 포트 매핑을 설정하여 애플리케이션을 확장하고 관리하는 것은 도커의 강력한 기능 중 하나입니다. 도커를 활용하여 애플리케이션을 더욱 효율적으로 구성하고 관리하고자 한다면, 포트 매핑에 대한 이해는 필수적입니다.