1. 개요
도커에서 톰캣을 설치하는 경험.
도커에 대해 보다 자세히 알고 싶다면 다음 글들을 읽어보자.
- Docker 가상 환경 구축 입문 (1) - Docker의 개념과 특징
- Docker 가상 환경 구축 입문 (2) - Docker 설치하기
- Docker 가상 환경 구축 입문 (3) - Docker 컨테이너 기동하기
- Docker 가상 환경 구축 입문 (4) - Dockerfile과 이미지 빌드
- Docker 가상 환경 구축 입문 (5) - 컨테이너 라이프사이클
2. 사전 확인 사항
도커 환경이어야 한다.
3. 실행
3.1. 이미지 받기
# docker pull tomcat:8 8: Pulling from library/tomcat 0bd44ff9c2cf: Pull complete 047670ddbd2a: Pull complete ea7d5dc89438: Pull complete 4a05570971bb: Pull complete 66f679cd5859: Pull complete 89362eaac850: Pull complete d76c23323cb4: Pull complete f7a113d2d566: Pull complete f7ffd00be2be: Pull complete dd678d267c76: Pull complete 97f6f322fa52: Pull complete 51d085dee99e: Pull complete Digest: sha256:29918ba10b2960ee304e0231fd62b9f9acbb5795aa978d52ab8bb1a9b0ce8fa7 Status: Downloaded newer image for tomcat:8
3.2. 이미지 확인
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat 8 df50c9d355cf 17 hours ago 463MB
3.3. 실행
# docker run -d -i -t -p 8080:8080 tomcat:8 f537532e716c3d968804c9c096d5a42afcb817d79d14dbbc13c4cb4f3d1563a3
3.4. 실행 확인
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f537532e716c tomcat:8 "catalina.sh run" 35 seconds ago Up 33 seconds 0.0.0.0:8080->8080/tcp reverent_darwin
3.5. 리부팅
docker restart [ID] 커맨드를 이용한다.
3.6. 사실 더 빠른 방법
docker run 시에 local 이미지가 없으면 pull 과정까지 함꼐 한다. 그리고 --name 옵션으로 이름까지 지정할 수 있다.
# docker run -d -i -t -p 8080:8080 --name tomcat8 tomcat:8 Unable to find image 'tomcat:8' locally 8: Pulling from library/tomcat 9a0b0ce99936: Pull complete db3b6004c61a: Pull complete f8f075920295: Pull complete 6ef14aff1139: Pull complete 962785d3b7f9: Pull complete 631589572f9b: Pull complete c55a0c6f4c7b: Pull complete 379605d88e88: Pull complete e056aa10ded8: Pull complete 6349a1c98d85: Pull complete Digest: sha256:77e41dbdf7854f03b9a933510e8852c99d836d42ae85cba4b3bc04e8710dc0f7 Status: Downloaded newer image for tomcat:8 ba0f54928433e157d34f633d3f4da947d4cb567f8109e2c114e38e79d9199964 root@ip-172-31-33-222:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba0f54928433 tomcat:8 "catalina.sh run" 6 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp tomcat8
4. 테스트
4.1. 기본 화면 호출
- 환경에 따라 알아서..
- 혹은 curl http://localhost:8080
4.2. 테스트 화면 배포
이런 test.jsp 를 만들어보자.
<% out.print("This is test"); %>
그리고 test.jsp를 도커 톰캣으로 넘겨줌.
# docker cp ~/test.jsp reverent_darwin:/usr/local/tomcat/webapps/ROOT
참고로 위의 reverent_darwin 는 내가 별도로 도커 이름을 지정안해서 임의로 지정된 것임.
물론 이름을 바꿀 수 있다. 아래는 sharp_mirzakhani라는 임의의 이름이 지정된 상태인데..
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b867d7794fa tomcat:8 "catalina.sh run" 16 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp sharp_mirzakhani
docker rename 하면 이름을 변경할 수 있다. tomcat8_1로 바꿔보자.
$ docker rename sharp_mirzakhani tomcat8_1 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b867d7794fa tomcat:8 "catalina.sh run" 16 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp tomcat8_1
4.3. 테스트 화면 호출
- 환경에 따라 알아서..
- 혹은 curl http://localhost:8080/test.jsp
# curl http://localhost:8080/test.jsp This is test
5. 이미지 생성
기본 tomcat 이미지에 위 test.jsp를 추가한 컨테이너를 이미지화해보자.
$ docker commit -m "initial commit" -a "tomcat8_my_inmage" tomcat8_1 tomcat8:0.1
이미지 목록을 확인.
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat8 0.1 961644e963a6 7 seconds ago 463MB tomcat 8 f3159377bac1 7 days ago 463MB tomcat <none> df50c9d355cf 5 weeks ago 463MB
이미지 삭제
$ docker rmi [IMAGE_ID]