반응형
Http 요청을 받는 애플리케이션을 사용하려면 컨테이너 밖에서 온 요청을 컨테이너 안에 있는 애플리케이션에 전달해줘야 한다.
그 역할을 담당하는 것이 바로 도커의 포트 포워딩 이다.
포트 포워딩이 되어있지 않은 경우, 아래와 같은 현상을 확인할 수 있다.
% curl http://localhost:8080/
curl: (7) Failed to connect to localhost port 8080: Connection refused
그렇다면 포트 포워딩이란?
호스트 머신의 포트를 컨테이너 포트와 연결해 컨테이너 밖에서 온 통신을 컨테이너 포트로 전달한다.
이 기능 덕분에 컨테이너 포트를 컨테이너 외부에서도 이용할 수 있다.
그러면 지금부터 포트 포워딩을 해보자.
1 ) 실행 중인 컨테이너를 정지시킨다.
% docker container stop $(docker container ls --filter "ancestor=example/echo" -q)
5f0aaba90b06
2 ) 호스트 포트 9000을 컨테이너 포트 8080에 연결하여 포트 포워딩 적용
% docker container run -d -p 9000:8080 example/echo:latest
a0226db4bfeb4ec8dc0de966c65d5690b8e3e842f5ef023962df691692ffa841
3 ) 앞전에 만든 어플리케이션의 응답 메시지가 정상적으로 노출되는 것을 확인할 수 있음
% curl http://localhost:9000
Hello Docker!!
즉, HTTP 요청이 정상적으로 전달됐고, 그 응답을 받아온 것이다 !!
+ 호스트 포트를 다음과 같이 생략할 수 있다.
이런 경우, 빈 포트가 에페메랄(ephemeral) 포트로 자동 할당된다.
% docker container run -d -p 8080 example/echo:latest
848f6e416f5843106d998b11b89a5dc1fd1b1693cc472636af1c817b7fb8d317
% docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
848f6e416f58 example/echo:latest "go run /echo/main.go" 21 seconds ago Up 20 seconds 0.0.0.0:32768->8080/tcp inspiring_kepler
[참고] 이전 내용 : chati.tistory.com/123
반응형
'Java > Deploy' 카테고리의 다른 글
[Docker] 도커 운영 및 관리를 위한 명령어 (0) | 2020.07.14 |
---|---|
[Docker] 도커 컨테이너 사용을 위한 명령어 (0) | 2020.07.14 |
[Docker] 도커 이미지 사용을 위한 명령어 (0) | 2020.07.13 |
[Docker] 도커 이미지 / 컨테이너 다루기 (0) | 2020.07.12 |
[Docker] Mac에서 도커 시작하기, Docker Tutorial (0) | 2020.07.08 |
[Jenkins] Could not find tools.jar 오류 해결 방법 (1) | 2019.11.13 |