티스토리 뷰

도커 컨테이너를 다룰 때 네트워크 설정을 잘 이해하고 사용하는게 중요하다. 도커 환경에서 각 컨테이너들에 할당되는 내부 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번 포트로 매핑된 것을 확인할 수 있다.

TAG
,
댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
1,455
Today
0
Yesterday
21
링크
«   2020/02   »
            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
글 보관함