Docker 포트 게시
Docker 포트 게시 (Port publishing)
Docker 컨테이너의 포트를 호스트에 게시(publish)하는 방법을 설명한 문서예요. -p / --publish 플래그를 다뤄요.
본문
컨테이너는 기본적으로 외부에서 접근할 수 없어요. 컨테이너의 포트를 호스트에 노출하려면 포트 게시 를 해야 해요.
기본 사용법
-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가 없기 때문).