[DOCKER] `8080:8080` 도대체 무슨 뜻일까?

굿굿·2026년 5월 11일

CI/CD

목록 보기
8/73

Docker를 처음 배우면 가장 많이 보는 명령어 중 하나가 이것이다.

docker run -p 8080:8080 hello-world

근데 처음 보면 솔직히 헷갈린다.

왜 8080을 두 번 쓰지?

오늘은 이 개념을 진짜 직관적으로 이해해보자.


Docker 컨테이너는 “별도의 컴퓨터”처럼 동작한다

Docker 컨테이너는 단순한 프로그램이 아니라:

격리된 작은 리눅스 환경

이라고 생각하면 이해가 쉽다.

즉:

내 PC
≠
Docker 컨테이너 내부

서로 네트워크 공간도 다르다.


Spring Boot는 컨테이너 안에서 실행된다

예를 들어 Spring Boot 앱이 있다고 해보자.

server:
  port: 8080

그러면 앱은:

컨테이너 내부의 8080 포트

에서 실행 중이다.

하지만 여기서 문제 발생.

컨테이너 안의 8080은
내 컴퓨터 브라우저가 직접 접근 못함

즉:

localhost:8080

을 브라우저에 입력해도 안 보인다.

왜냐면:

내 PC의 8080
컨테이너의 8080
은 서로 다르기 때문

그래서 포트 연결(port mapping)을 해야 한다

이걸 연결해주는 옵션이 바로:

-p

이다.

예시:

docker run -p 8080:8080 hello-world

의 의미:

내 컴퓨터 8080
→
컨테이너 내부 8080

이다.

그림으로 보면:

브라우저(localhost:8080)
        ↓
내 컴퓨터의 8080 포트
        ↓
Docker가 전달
        ↓
컨테이너 내부 8080 포트
        ↓
Spring Boot 앱

왼쪽과 오른쪽의 차이

형식은 항상 이렇다.

-p [호스트포트]:[컨테이너포트]

즉:

-p 8080:8080

은:

호스트(내 PC) 8080
→
컨테이너 8080

이라는 뜻.


꼭 같은 번호를 쓸 필요는 없다

예를 들어:

docker run -p 9090:8080 hello-world

도 가능하다.

이 의미는:

내 컴퓨터 9090
→
컨테이너 내부 8080

즉 Spring Boot는 여전히:

컨테이너 안에서 8080으로 실행

중이다.

하지만 브라우저에서는:

localhost:9090

으로 접속해야 한다.


왜 이런 구조를 사용할까?

이유는 엄청 중요하다.

1. 포트 충돌 방지

내 PC에서 이미 8080 사용 중이라면:

-p 9090:8080

처럼 바꿔서 실행 가능.


2. 여러 컨테이너 실행 가능

예시:

docker run -p 8081:8080 app1
docker run -p 8082:8080 app2
docker run -p 8083:8080 app3

모든 앱은 내부적으로 8080 사용하지만:

외부에서는 다른 포트로 접근

가능하다.


EXPOSE와의 차이

Dockerfile에서 자주 보이는 이것:

EXPOSE 8080

은:

이 컨테이너는 8080 포트를 사용합니다~

라고 알려주는 메타데이터 느낌이다.

실제 연결은 아니다.

진짜 외부 연결은:

-p

가 한다.

즉:

EXPOSE = 설명
-p = 실제 연결

정리

핵심 한 줄

-p 8080:8080
=
내 컴퓨터 8080 요청을
컨테이너 내부 8080으로 전달

형식

-p [호스트포트]:[컨테이너포트]

예시

docker run -p 9090:8080 my-app

의 의미:

localhost:9090
↓
컨테이너 8080
↓
Spring Boot 실행

마무리

Docker에서 포트 개념은 진짜 중요하다.

왜냐면 이후에 배우게 될:

  • Docker Compose
  • Kubernetes Service
  • Ingress
  • Load Balancer
  • NodePort

전부 결국:

트래픽을 어디로 전달할 것인가

를 다루는 개념이기 때문이다.

즉 8080:8080 하나 안에:

컨테이너 네트워크의 핵심 개념

이 들어있다.

profile
https://greenapple0101.github.io/

0개의 댓글