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] 커맨드를 이용한다.


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]