Docker 포트 게시

Docker 포트 게시 (Port publishing)

Docker 컨테이너의 포트를 호스트에 게시(publish)하는 방법을 설명한 문서예요. -p / --publish 플래그를 다뤄요.

출처: Publish container ports

본문

컨테이너는 기본적으로 외부에서 접근할 수 없어요. 컨테이너의 포트를 호스트에 노출하려면 포트 게시 를 해야 해요.

기본 사용법

-p HOST_PORT:CONTAINER_PORT 형식으로 지정해요.

$ docker run -d -p 80:80 nginx

이 명령은 컨테이너의 80 포트를 호스트의 80 포트로 게시해요.

다양한 형태

  • 특정 호스트 IP에 바인딩: -p 127.0.0.1:8080:80
  • UDP: -p 8080:80/udp
  • 임의 호스트 포트: -P 플래그는 컨테이너의 노출된(EXPOSE) 모든 포트를 임의의 높은 포트로 게시해요.

게시 방식

게시된 포트는 Docker Desktop/데몬의 백엔드가 호스트에서 포트를 리슨하고, 컨테이너의 해당 포트로 트래픽을 전달하는 방식으로 동작해요(bridge 네트워크의 DNAT).

주의

  • 포트 충돌: 호스트에서 이미 사용 중인 포트는 게시할 수 없어요.
  • 기본적으로 모든 인터페이스(0.0.0.0)에서 리슨하므로, 보안을 위해 127.0.0.1 등으로 바인딩을 제한할 수 있어요.
  • host 네트워크 모드에서는 게시가 필요 없어요(NAT가 없기 때문).

더 알아보기