티스토리 뷰

til

docker run -p와 Dockerfile의 EXPOSE

주먹불끈 2022. 12. 12. 00:06

개요

 

매번 헷갈리기에 이 참에 제대로 정리

 

참고 링크: https://hbase.tistory.com/98

EXPOSE 공식문서: https://docs.docker.com/engine/reference/builder/#expose

docker run -p 공식 문서: https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose

 

TL;DR

 

EXPOSE는 Dockerfile 안에 명시하는데 도커 이미지를 실행하면 해당 port를 외부에 공개할 예정이라는 말이다. 실제로 공개하려면 docker run -p 또는 docker run -P 명령을 써야 한다.

 

Dockerfile 안에 EXPOSE 5005 라고 하였다면

docker run -p 6006:5005 // 호스트의 6006으로 접근하면 도커 컨테이너의 5005로 연결해주라는 말이며

docker run -P // 로 대문자 P를 사용하면 호스트의 사용하지 않는 임의의 포트가 도커 컨테이너의 5005로 연결된다.

 

 

공식문서 EXPOSE

 

런타임에 컨테이너가 특정 포트를 듣고 있는다는 말이다.

TCP, UDP를 명시할 수 있으며 디폴트는 TCP이다.

EXPOSE를 썼다고 실제로 해당 포트를 공개(publish) 하는 것은 아니다.

위에 언급한 대로 docker run 할 때에 -p 또는 -P 옵션을 사용해야 한다.

 

중요. EXPOSE 에 어떤 포트를 명시했건 상관없이 -p 로 특정 포트를 할당하면 그걸로 overwrite된다.

 

 

 

공식문서 docker run -p

 

아래 명령은 도커 컨테이너를 실행하며 호스트의 80포트를 도커 컨테이너의 8080포트와 연결한다.

여기서는 TCP를 명시했다.

127.0.0.1이라고 명시하지 않았다면 외부에서도 접근이 가능하다.

 

반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함