티스토리 뷰
개요
매번 헷갈리기에 이 참에 제대로 정리
참고 링크: 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이라고 명시하지 않았다면 외부에서도 접근이 가능하다.
'til' 카테고리의 다른 글
PostgrSQL - 두 컬럼을 Unique하게 설정하려면 (0) | 2022.12.24 |
---|---|
MacBook M1 Pro + Logitech MX Master 3s 에서 마우스가 버벅인다면 (0) | 2022.12.15 |
COCO dataset 소수점 자리수 (0) | 2022.12.03 |
PostgreSQL에서 autoincrement primary key 설정하기 (0) | 2022.12.01 |
P99 latency란? (0) | 2022.11.28 |
- Total
- Today
- Yesterday
- notion
- 인텔리제이
- strange
- go
- Gin
- solid
- golang
- 체호프
- 노션
- agile
- OpenAI
- 클린 애자일
- 영화
- folklore
- Bug
- JIRA
- API
- pool
- 2023
- 독서
- postgres
- 잡학툰
- websocket
- intellij
- github
- bun
- Shortcut
- 독서후기
- ChatGPT
- 제이펍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |