티스토리 뷰
도커 컨테이너를 다룰 때 네트워크 설정을 잘 이해하고 사용하는게 중요하다. 도커 환경에서 각 컨테이너들에 할당되는 내부 IP, Port와 호스트 운영체제의 IP, Port 사이의 관계를 잘 이해하고 있어야 도커 환경을 잘 사용할 수 있다.
docker run -p 명령
도커 컨테이너를 실행 시킬 때, '-p' 옵션으로 호스트 운영체제와 컨테이너 환경의 포트를 매핑 시킬 수 있다. 예를 들어
docker run -it -p 5005:5005 ubuntu
이렇게 컨테이너를 새로 만들면, 호스트 운영체제의 5005번 포트와 컨테이너의 5005 포트가 매핑된다. 즉, 호스트 운영체제의 5005 포트로 전달된 정보들이 컨테이너 환경의 5005 포트로 포워딩된다는 의미다.
docker run -it -p 8088:80 webserver
포트 매핑은 꼭 같은 번호로 하지 않아도 된다. 위 명령처럼 컨테이너를 실행하면 호스트 운영체제의 8088번 포트가 컨테이너의 80번 포트로 연결된다.
Dockerfile의 EXPOSE
도커 이미지를 만들 수 있는 Dockerfile에 EXPOSE 명령을 사용할 수 있다. 예를 들어
FROM openjdk:8
COPY Test.class /root
WORKDIR /root
EXPOSE 5005
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005", "Test"]
이런 Dockerfile이 있을 때 EXPOSE 명령을 이용해, '이 도커 이미지는 5005번 포트를 외부에 공개할 예정이다'라고 명시할 수 있다.
Dockerfile의 EXPOSE로 포트를 명시했다고해서 달라지는건 없다. 'docker run -p' 옵션으로 포트를 명시하지 않으면 컨테이너의 포트가 호스트 운영체제에 공개되지 않는다.
EXPOSE 구문으로 명시한 포트는 'docker run -P' 명령을 이용할 때 호스트 운영체제로 오픈된다. 이 때, 호스트 운영체제의 랜덤 포트 번호가 컨테이너의 EXPOSE 구문으로 명시한 포트에 매핑된다. 또 한, 도커를 다루는 GUI 프로그램에서 -p 옵션으로 줄 수 있게 힌트 역할을 할 수도 있다.
docker run -p 옵션과 docker run -P 옵션을 비교해보자.
우선 docker run -d -p 5005:5005 명령으로 컨테이너를 띄워보면,
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d94bd97ad9d test_container "java -agentlib:jdwp…" 3 seconds ago Up 2 seconds 0.0.0.0:5005->5005/tcp adoring_mclean
PORTS 정보에 0.0.0.0:5005->5005/tcp 라는 항목을 볼 수 있다. 호스트의 5005번 포트와 컨테이너의 5005번 포트가 매핑된 것을 알 수 있다.
두 번째로 docker run -d P 명령으로 컨테이너를 띄워봤다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d2dc4b0f8b5 test_container "java -agentlib:jdwp…" 10 minutes ago Up 10 minutes 0.0.0.0:32768->5005/tcp heuristic_lamarr
0.0.0.0:32768->5005/tcp 이라는 정보에서 호스트 운영체제의 랜덤 포트 번호가 컨테이너의 5005번 포트로 매핑된 것을 확인할 수 있다.
- Total
- Today
- Yesterday
- docker
- java
- 텃밭
- 상추 재배기
- Jekyll
- 깃허브
- 하둡
- 베란다 텃밭
- 화분
- linux
- 자바
- 파이참
- 지킬
- pycharm
- InterlliJ
- 고추
- 리눅스
- 청양고추
- hadoop
- 도커
- 상추
- GitHub
- 베란타 텃밭
- MacOS
- nf_conntrack
- monitoring
- 화분 버리기
- Python
- okhttp
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |