이 글은 2018년 네이버에 포스팅했던 글을 Tistory로 리포스팅한 글입니다.
docker에 대한 간단한 개념과 명령어를 알아 보았다면 이번에는 미리 만들어진 Tomcat8 도커 이미지를 이용해 간단한 웹 초기 화면을 웹 브라우저에서 호출해 보도록 하겠습니다. 이번 실습에 사용될 웹어플리케이션의 컨텍스트 이름은 ROOT이며 디렉토리 및 파일의 구조는 다음과 같습니다.
C:\webapps\ROOT │ index.jsp │ └─WEB-INF web.xml |
실습에 사용될 어플리케이션은 아래의 링크에서 배포 파일 형태로 다운로드 받으실 수 있습니다. 배포 파일의 이름은 ROOT.war 파일 입니다.
http://sharplee7.blog.me/221464833661
또한 미리 만들어진 Tomcat8의 이미지는 다음과 같은 내부 구조를 가지고 있습니다.
tomcat@a75a6698326e:/opt/tomcat$ pwd /opt/tomcat tomcat@a75a6698326e:/opt/tomcat$ ls conf Catalina catalina.properties logging.properties tomcat-users.xml catalina.policy context.xml server.xml web.xml tomcat@a75a6698326e:/opt/tomcat$ ls webapps . tomcat@a75a6698326e:/opt/tomcat$ |
실습에 사용할 tomcat8의 이미지는 아래의 웹 사이트에서 다운로드 받기 바라겠습니다.(물론 docker hub에서 pull 할 수 있지만 실습에 사용되는 이미지는 커스터마이즈 되어 있으며 load 명령어 사용법을 위해 여기에서는 별도로 다운로드 받기 바라겠습니다.)
https://drive.google.com/file/d/1Z69312AU9NDEEbzyoIgk2C71uLuopRBO/view?usp=sharing
실습 이해
tomcat의 기본 웹 어플리케이션이 배포되는 환경은 $TOMCAT_HOME/webapps 입니다. 이번 실습에서는 컨테이너 내부의 이 webapps 디렉토리를 Volume Mount해서 Host computer인 윈도우의 디렉토리와 disk share 하는 방식으로 어플리케이션(ROOT.war)을 배포 하도록 하겠습니다. 이를 다이어그램으로 표시하면 다음과 같은 형식이 될 것입니다.
Tomcat 8 이미지 로드(load)
https://drive.google.com/file/d/1Z69312AU9NDEEbzyoIgk2C71uLuopRBO/view?usp=sharing 에서 다운받은 tomcat8-3-image.zip 파일을 다음과 같이 Docker 이미지로 인식 시키도록 합니다.
- docker load –i [image명] (도커 이미지 파일을 도커 로컬 레파지트로에 등록)
C:\Users\FKL>docker load -i tomcat8-3-image.zip 1ff32c20d887: Loading layer [==================================================>] 43.01kB/43.01kB Loaded image: tomcat8-3-image:latest |
ROOT.war 파일 복사
실습을 위해 윈도우의 C:\webapps라는 디렉토리를 다음과 같이 만들도록 합니다.
C:\webapps>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 985C-8D25 C:\webapps 디렉터리 2019-02-14 오후 01:42 <DIR> . 2019-02-14 오후 01:42 <DIR> .. 0개 파일 0 바이트 3개 디렉터리 100,774,674,432 바이트 남음 |
http://sharplee7.blog.me/221464833661 에서 다운받은 ROOT.war 파일을 방금 만든 C:\webapps에 복사해 둡니다.
C:\webapps>dir C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 985C-8D25 C:\webapps 디렉터리 2019-02-14 오후 01:58 <DIR> . 2019-02-14 오후 01:58 <DIR> .. 2019-02-14 오후 01:56 1,128 ROOT.war 1개 파일 1,128 바이트 2개 디렉터리 100,769,656,832 바이트 남음 C:\webapps> |
Tomcat 8 container 등록 및 C:\webapps volume mount
docker run [옵션] -v [호스트 드라이브 경로]:[컨테이너 내부 디렉토리 경로] [실행할 이미지명] (HOST의 디렉토리를 Container내부의 디렉토리로 바인딩 시킵니다.)
* 실제 입력한 명령어:
docker run -d -i -t -p 8083:8080 --name tomcat8-3 -v c:/webapps:/opt/tomcat/webapps tomcat8-3-img
실행된 로그 확인
C C:\Users\FKL>docker logs tomcat8-3 Checking *.war in /webapps Checking tomcat extended libs *.jar in /libs Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TMPDIR: /opt/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Using CATALINA_PID: /opt/tomcat/temp/tomcat.pid 14-Feb-2019 05:04:24.119 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 14-Feb-2019 05:04:24.203 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"] 14-Feb-2019 05:04:24.214 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1964 ms 14-Feb-2019 05:04:24.337 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina 14-Feb-2019 05:04:24.342 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.11 14-Feb-2019 05:04:24.439 INFO [localhost-startStop-1] deployWAR Deploying web application archive /opt/tomcat/webapps/ROOT.war 14-Feb-2019 05:04:25.582 INFO [localhost-startStop-1] deployWAR Deployment of web application archive /opt/tomcat/webapps/ROOT.war has finished in 1,141 ms 14-Feb-2019 05:04:25.618 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 14-Feb-2019 05:04:25.628 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 14-Feb-2019 05:04:25.631 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1415 ms C:\Users\FKL |
이렇게 실행된 컨테이너는 웹브라우저를 통해 확인 할 수 있습니다.(http://localhost:8083/)
또한 docker container 내부로 로그인해서 ROOT.war 파일이 webapps 디렉토리 내부에 복사되어 있는 것을 확인 할 수 있습니다.
C:\webapps>docker exec -ti tomcat8-3 /bin/bash tomcat@a75a6698326e:/opt/tomcat$ cd webapps tomcat@a75a6698326e:/opt/tomcat/webapps$ ls ROOT ROOT.war tomcat@a75a6698326e:/opt/tomcat/webapps$ |
이번 회는 여기까지 알아 보겠습니다.
감사합니다.
'Application Modernization > Container & PaaS' 카테고리의 다른 글
Docker Private Container Registry 만들기 (0) | 2021.09.29 |
---|---|
자주쓰는 Dockerfile 명령어 (0) | 2021.09.14 |
Dockerfile 로 docker image 작성 (0) | 2021.09.14 |
Docker로 Tomcat MySQL 실행 (0) | 2021.09.14 |
Docker 개념 (0) | 2021.09.07 |