[Docker] run 명령어, Port-forwarding
지난 글에서 Docker라는 Container Engine을 통해 Image로 Container를 생성하고 삭제하는 기초적인 실습을 해보았다
오늘도 더 나아가서 Container 다루는 '사용법'과 그 목적을 공부할 것이다.
1. Docker run
사실 이미지를 pull하고 컨테이너를 create, start하는 것은 교과서적인 내용이었다.
run 명령어를 통해 (이미지 가져오기+컨테이너생성+컨테이너실행+ α) 를 한꺼번에 할 수 있다.
docker container run --name tomcat8100 \
tomcat:9.0.74-jre8
한편, + α 는 뭐가 있을까? 아래와 같은 작업이 있다.
docker container run --name tomcat8100 \
-p 8100:8080 \
tomcat:9.0.74-jre8
-p 8100:8080 가 추가되었는데, 이는 Port-forwarding을 한 것이다.
2. Port-forwarding
docker container run --name tomcat8100 \ tomcat:9.0.74-jre8
위와 같이 Container를 생성 및 실행했다고 하자.
Container에 Tomcat이 있고 그 Container를 실행하면 Tomcat이 실행되며, 포트는 8080 일 것이다. (Tomcat의 default port)
내 Linux서버 위에 이 컨테이너를 올려뒀으니 이제 나는 서버 접속을 통해 WAS에도 접속할 수 있을까?
그렇지가 않다. 사실 당연한 게, 브라우저에 서버공인IP:8080을 입력하면 Host Linux서버에서 8080포트를 찾을 것이다.
그러나 서버에 8080포트를 가진 WAS가 설치된 게 아니다. 컨테이너에 설치되어 있다.
즉, 외부에서부터 Host에 특정 Port로 들어온 요청을
Docker가 Container의 WAS Port인 8080으로 연결. forwarding 시켜줘야 하는 것이다.
docker container stop tomcat8100
docker container rm tomcat8100
컨테이너를 삭제하고 아래와 같이 포트포워딩하여 다시 만들어보자.
Host에 8100으로 들어오면 Container에 8080으로 연결시켜주도록 하였다.
docker container ls -a로 다시 확인해보면 PORTS부분에 Port-forwarding이 반영 된 것도 확인할 수 있다.
docker container run --name tomcat8100 \
-p 8100:8080 \
tomcat:9.0.74-jre8
다시 브라우저에서 확인해보자
Host공인IP:8100 을 입력했다.
404가 떠서 막연히 에러가 난다고 생각할 수도 있는데, Apache Tomcat/9.0.74가 정상적으로 작동한 거다.
단지 아직 war등 배포할 파일을 넣지 않았고, 그러니 당연히 index.html이나 index.jsp가 없으니까 404가 뜰 뿐
WAS에 성공적으로 request한 것을 확인하였다.
Container를 통해 필요한 WAS환경을 아주 편하게 구축하고 Docker로 실행해보면서
왜 요즘 사람들이 Docker..Docker..하는지 조금은 알게 된 시간이었다!!!
다음 글에서는 war를 넣어서 내가 개발한 무언가를 '배포'까지 해보겠다