C.W.K.
Stream
Lesson 03 of 05 · published

Port 매핑 — Host:Container, bind 주소, 랜덤

~12 min · commands, networking

Level 0Container 호기심
0 XP0/36 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Container 가 왜 도달 안 되냐

Container 는 자기 network namespace 가 있어. 명시적으로 매핑하기 전엔 포트가 호스트 network 에 보여. Dockerfile 의 EXPOSE 는 문서일 뿐이야 — publish 안 해.

-p 문법

-p [HOST_IP:]HOST_PORT:CONTAINER_PORT[/PROTOCOL]
  • -p 8080:80 — 호스트 8080 → container 80 (TCP, 모든 인터페이스)
  • -p 127.0.0.1:8080:80 — loopback 만 (LAN 노출 안 함)
  • -p 8080:80/udp — TCP 대신 UDP
  • -p 80 — 랜덤 호스트 포트. docker port 로 확인.

순서는 HOST:CONTAINER

이거 다들 헷갈려. -p 8080:80 의 뜻은 "노트북 8080 치면 container 80 에 도달". 거꾸로 하면 희망도 거꾸로.

Code

흔한 포트 패턴·bash
# Map one port (HTTP)
docker run -d -p 8080:80 nginx:1.27-alpine
curl http://localhost:8080

# Map both HTTP and HTTPS
docker run -d -p 8080:80 -p 8443:443 nginx:1.27-alpine

# Bind to loopback only — not reachable from the LAN
docker run -d -p 127.0.0.1:8080:80 nginx:1.27-alpine

# Let Docker pick a host port (handy for parallel test envs)
docker run -d -p 80 --name web nginx:1.27-alpine
docker port web
# 80/tcp -> 0.0.0.0:55012

External links

Exercise

nginx 두 개 띄워 — 호스트 포트 8081, 8082, 둘 다 127.0.0.1 only. 본인 머신에서 curl 로 확인. 그 다음 LAN 의 다른 머신에서 도달 안 되는 거 확인. 명령이랑 curl 결과 캡처.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.