기본적으로 docker hub 를 통하여 tomcat image를 확인 한 뒤 pull 한다.
# docker search tomcatNAME DESCRIPTION STARS OFFICIAL AUTOMATEDtomcat Apache Tomcat is an open source implementa... 1448 [OK]# docker pull tomcatlatest: Pulling from tomcat8ee7f64d0d9f: Pull complete.. 생략..70b2ded797df: Pull completeDigest: sha256:15e0b943137b81f0111b4c4e6ce070ce34910f4eed55ebfaeb642afe72f14c75Status: Downloaded newer image for tomcat:latest# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEtomcat latest 70b2ded797df 5 days ago 292.4 MB
해당 tomcat image 를 base 로 custom 한 image 를 생성 한다.
생성 하기 위해서 Dockerfiler 을 생성 한다
[From : 기반이 되는 image load
COPY : host 의 파일을 guest 환경에 파일로 복사 : 테스트를 위하여 mysql 커넥터 파일을 lib 에 복사
EXPOSE : 외부로 노출될 포트 정의 ]
## vi DockerfileFROM tomcat:latestMAINTAINER ycy1766@gmail.comCOPY mysql-connector-java-5.1.43.tar.gz /usr/local/tomcat/lib/EXPOSE 8080
해당 Dockerfile 을 cy_tomcat_test 이라는 image 로 build 하여 image 를 확인 한다.
# docker build -t cy_tomcat_test .Sending build context to Docker daemon 96.84 MBSending build context to Docker daemonStep 0 : FROM tomcat:latest---> 70b2ded797dfStep 1 : MAINTAINER ycy1766@gmail.com---> Using cache---> d343393159e2Step 2 : COPY mysql-connector-java-5.1.43.tar.gz /usr/local/tomcat/lib/---> 4c720471a671Removing intermediate container 45f45821f60aStep 3 : EXPOSE 8080---> Running in 3accda8a7da0---> 6bf09672df9dRemoving intermediate container 3accda8a7da0Successfully built 6bf09672df9d# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcy_tomcat_test latest 6bf09672df9d 6 seconds ago 295.9 MBtomcat latest 70b2ded797df 5 days ago 292.4 MB
테스트를 위하여 아래와 같이 -d 옵션을 통하여 백그라운드로 cy_tomcat 이라는 컨테이너로 cy_tomcat_test 이미지로 run 한다.
docker 프록시를 통하여 외부에서 포워딩 할 수 있도록 -p 옵션으로 docker 포트 8080 포트를 호스트 포트 8812 포트로 포워딩 한다.
# docker run -d -i -t --name="cy_tomcat" -p 8812:8080 cy_tomcat_test35796277a3c4f7fec8cc20b07bf350f422c6eb4a9e7b164c5922a985f1b2559a
docker ps 로 해당 컨테이너에 대한 프로세스 확인하고, exec 명령어를 /bin/bash 환경에서 들어갈 수 있도록 실행 한다.
(guest 컨테이너에 진입)
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES35796277a3c4 cy_tomcat_test "catalina.sh run" 2 seconds ago Up 1 seconds 0.0.0.0:8812->8080/tcp cy_tomcat# docker exec -i -t cy_tomcat /bin/bashroot@35796277a3c4:/usr/local/tomcat#
DockerFile 을 통하여 추가한 라이브러리가 제대로 복사 되었는지 확인 한다.
root@35796277a3c4:/usr/local/tomcat# ls -al lib/mysql-connector-java-5.1.43.tar.gz-rw-r--r--. 1 root root 3462610 Aug 13 04:20 lib/mysql-connector-java-5.1.43.tar.gz
터미널에 나온후 war 파일 deploy 를 위해서 해당 컨테이너를 rm 을 통하여 삭제 한다.
# exitexit# docker stop cy_tomcatcy_tomcat# docker rm cy_tomcatcy_tomcat
war 파일 배포를 위하여 로컬의 /tmp/cyDockTest2.war 파일을 run 할때 -v 옵션을 통하여 webapps 디렉토리에 이동 한다
(Dockerfiler 작성시 COPY를 통하여 이동 하여도 상관 없음)
# docker run -d -i -t --name="cy_tomcat" \-p 8812:8080 \-v /tmp/cyDockTest2.war:/usr/local/tomcat/webapps/cyDockTest2.war \cy_tomcat_testdocker run -d -i -t --name="cy_tomcat" -p 8812:8080 cy_tomcat_test
docker 컨테이너가 정상인지 프로세스 확인 하며, 브라우저상에 정상적으로 페이지가 뜨는지 확인 한다.
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3a92d8aa0cb1 cy_tomcat_test "catalina.sh run" 4 seconds ago Up 3 seconds 0.0.0.0:8812->8ㅇ080/tcp cy_tomcat# docker exec -i -t cy_tomcat /bin/bashroot@06c985be1fe6:/usr/local/tomcat# ls -al webapps/total 976drwxr-x---. 8 root root 4096 Aug 15 05:50 .drwxr-sr-x. 11 root staff 4096 Aug 9 21:59 ..drwxr-x---. 3 root root 4096 Aug 9 21:58 ROOTdrwxr-x---. 5 root root 4096 Aug 15 05:50 cyDockTest2-rw-r--r--. 1 root root 965304 Aug 15 05:48 cyDockTest2.wardrwxr-x---. 14 root root 4096 Aug 9 21:58 docsdrwxr-x---. 6 root root 4096 Aug 9 21:58 examplesdrwxr-x---. 5 root root 4096 Aug 9 21:58 host-managerdrwxr-x---. 5 root root 4096 Aug 9 21:58 manager
반응형
'System > Container' 카테고리의 다른 글
Podman Rootless Container 의 PID/User Namespace (0) | 2024.02.15 |
---|---|
Podman short-name 설정 (1) | 2023.12.30 |
Docker init 를 이용한 Defunct Processes in Docker 해결 (0) | 2018.05.26 |
오프라인 환경의 docekr image save/load (0) | 2017.08.15 |