Print
카테고리: [ Apache Tomcat ]
조회수: 50588

1. 개요

도커에서 톰캣을 설치하는 경험.

도커에 대해 보다 자세히 알고 싶다면 다음 글들을 읽어보자.


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. 기본 화면 호출

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
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]