본문 바로가기
킷도우의 클라우드, 쿠버네티스/도커(Docker)

[Docker] 도커 설치, 톰캣 컨테이너 이미지 다운, 컨테이너 생성/시작/중지/삭제 방법(Docker run, start, stop, rm) + tomcat 404 에러 해결하기

by 킷도우 2023. 1. 12.
반응형

안녕하세요. IT Window 킷도우입니다.

지난 번 포스팅에서는 도커 컨테이너에 대해서 알아봤는데요. 못 보신 분들은 아래 링크 참고해주세요~

https://kitdow.tistory.com/24

 

[Docker] 도커란? 도커 컨테이너란? 하이퍼바이저(Hypervisor), VM VS Continer Runtime, 컨테이너

안녕하세요! IT Window 킷도우입니다. 도커 컨테이너란 무엇인가에 대해서 오늘 한 번 알아보려고 하는데요! 도커에 대해서 알아보긴 전 우리가 알아봐야할 것은 바로 이 컨테이너란 무엇인가 입

kitdow.tistory.com

 

이이서 도커를 GCP 환경에서 설치하고, 톰캣(Tomcat) 컨테이너 이미지 다운로드 및 컨테이너를 생성, 시작, 중지, 삭제하는 방법에 대해서 포스팅해 보겠습니다.

 

1. 도커 설치

GCP에 ubuntu linux OS 기반의 VM을 만들었는데요. 여기에 도커를 설치해 보겠습니다.

1) root 계정으로 전환합니다.

kitdow_on@instance-1:~$ sudo -i
root@instance-1:~#

2) 패키지 매니저를 업데이트합니다.

root@instance-1:~# apt update
Hit:1 http://us-west4.gce.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://us-west4.gce.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://us-west4.gce.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:4 http://us-west4.gce.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [1503 kB]
Get:5 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:6 http://us-west4.gce.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [25.2 kB]
Fetched 1864 kB in 1s (1896 kB/s)                                               
Reading package lists... Done
Building dependency tree       
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@instance-1:~#

3) 패키지 매니저로 도커 설치

apt install docker.io -y

4) 설치가 잘 됐는지 확인

root@instance-1:~# docker info

네 아주 간단하게 도커 설치를 완료했습니다. 이제 컨테이너 이미지를 하나 다운받아 보겠습니다.

 

2. 톰캣(Tomcat) 컨테이너 이미지 다운로드

1) Docker hub 사이트 회원가입

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

회원가입 시 인증 가능한 이메일만 있다면 편하게 가입 가능하니 Sign up(회원가입) 바로 진행해 주시구요.

 

2) tomcat 검색

Docker(도커) 컨테이너 이미지 다운로드 방법 - 1

 

3) DOCKER OFFICIAL IMAGE라고 표시된 tomcat 선택

Docker(도커) 컨테이너 이미지 다운로드 방법 - 2

3) Tags 탭에서 원하는 버전의 도커 이미지를 명령어 실행시켜 다운로드

Docker(도커) 컨테이너 이미지 다운로드 방법 - 3

전 9.0.70-jdk8-corretto의 컨테이너 이미지 다운로드 명령어를 복사하겠습니다.

docker pull tomcat:9.0.70-jdk8-corretto

위 명령어를 리눅스에서 실행시켜 컨테이너 이미지를 다운로드 받아겠습니다.

 

4) 컨테이너 이미지 확인

root@instance-1:~# docker images
REPOSITORY   TAG                    IMAGE ID       CREATED       SIZE
tomcat       9.0.70-jdk8-corretto   616d03c63d58   3 weeks ago   379MB
root@instance-1:~#

네 이렇게 정상적으로 컨테이너 이미지가 다운로드된 것을 확인할 수 있습니다.

반응형

3. Tomcat 컨테이너 생성, 시작하기 - docker run

컨테이너를 실행시키는 방법에 대해서는 위 docker hub 사이트에서 tomcat 관련 설명을 쭉 내려 읽다 보면 나오는데요.

바로 How to use this image 부분입니다.

Docker(도커) Tomcat 컨테이너 실행 방법

여기서 -it 옵션은 가상 터미널을 열어 키보드의 입력을 전달하겠다는 의미이며, --rm 옵션의 경우 컨테이너를 중지시키면 자동으로 해당 컨테이러 삭제시키겠다는 의미입니다. -p 옵션은 컨테이너 포트(8080)를 호스트 포트(8888, 사용자가 접속하는 포트)로 포트 포워딩하겠다는 의미입니다. 즉 우리는 위 명령어로 톰캣 컨테이너를 올리고 외부에서 접속할 떄는 http://ip:8888로 접속하면 되는겁니다. 근데 위 예시대로 8888포트로 요청하면 정말 될까요? 안됩니다.

우리가 설치한 톰캣 서버는 GCP에 위치해 있습니다. 고로 우리는 localhost가 아닌 원격에 있는 GCP 서버로 요청을 해야합니다. 근데 최초에 우리가 GCP 세팅할 당시 HTTP 요청에 대한 방화벽을 허용했습니다. 즉, HTTP(80번 포트)포트 외 다른 포트에 대해선 방화벽을 풀어주지 않아 GCP가 허락해주지 않을 것이기에 http://IP:8888이 아닌 http://IP:80(80포트는 생략 가능하므로 http://IP 로 요청 가능)으로 요청해야 하죠. 그러므로 우리는 컨테이너를 기동시킬 때 아래와 같이 기동 시켜야합니다. 

docker run -it -d -p 80:8080 --name tomcat tomcat:9.0.70-jdk8-corretto
(80포트로 들어온 요청을 포트 포워딩을 통해 8080포트로 토스~)

 중요 옵션들 이므로 다시 한 번 설명드리겠습니다.

-it 옵션: 가상 터미널을 열어 키보드의 입력을 전달한다.

-d 옵션: 백그라운드에서 실행한다.

-p 옵션: 80포트로 들어온 요청을 8080포트로 포트 포워딩한다.

--name 옵션: tomcat이라는 이미지 이름을 지정(이 이름으로 컨테이너를 쉽게 stop, start할 수 있으므로 반드시 외우자)

--rm 옵션: 컨테이너를 stop할 경우 자동으로 컨테이너가 삭제됩니다. 우리는 컨테이너를 stop 시키는 실습도 해 볼 것이기 때문에 이번 실습에선 --rm 옵션을 넣지 않았습니다.

root@instance-1:~# docker run -it -d -p 80:8080 --name tomcat tomcat:9.0.70-jdk8-corretto
fb593cf37d4d39ace371d6f342916af8c0266ab74cb8a163b9b2b42fbd66770b

완료된 경우 위 그림과 같은 결과가 나옵니다.

명령어를 통해 컨테이너가 잘 올라와 있는지 확인해 보겠습니다.

root@instance-1:~# docker ps -a
CONTAINER ID   IMAGE                         COMMAND             CREATED          STATUS          PORTS                                   NAMES
fb593cf37d4d   tomcat:9.0.70-jdk8-corretto   "catalina.sh run"   55 seconds ago   Up 54 seconds   0.0.0.0:80->8080/tcp, :::80->8080/tcp   tomcat

STATUS가 Up 인 것은 컨테이너가 기동중인 상태인 것이고 컨테이너가 내려가면 Exited 로 표시됩니다.

 

4. Tomcat 컨테이너 중지 - docker stop

앞 서 올린 톰캣 컨테이너를 중지시켜 보겠습니다. --name 옵션으로 지정한 컨테이너 이름 tomcat으로 쉽게 내릴 수 있습니다.

root@instance-1:~# docker stop tomcat
tomcat
root@instance-1:~# docker ps -a
CONTAINER ID   IMAGE                         COMMAND             CREATED         STATUS                       PORTS     NAMES
fb593cf37d4d   tomcat:9.0.70-jdk8-corretto   "catalina.sh run"   7 minutes ago   Exited (143) 9 seconds ago             tomcat

docker stop tomcat 명령어를 사용하면 되고 docker ps -a 명령어로 확인해 보면 STATUS가 Exited로 변겨된 것을 볼 수 있습니다.

 

5. Tomcat 컨테이너 시작 - docker start

중지 시킨 컨테이너를 다시 시작시켜 보겠습니다. 다시 시작 시킬땐 run이 아닌 start 명령어를 활용합니다.

root@instance-1:~# docker start tomcat
tomcat
root@instance-1:~# docker ps -a
CONTAINER ID   IMAGE                         COMMAND             CREATED         STATUS         PORTS                                   NAMES
fb593cf37d4d   tomcat:9.0.70-jdk8-corretto   "catalina.sh run"   8 minutes ago   Up 6 seconds   0.0.0.0:80->8080/tcp, :::80->8080/tcp   tomcat

6. Tomcat 컨테이너 삭제 - docker rm

컨테이너를 삭제하는 방법 또한 간단합니다. 컨테이너를 삭제하기에 앞서 먼저 컨테이너를 중지 시킨 후 삭제 해야한다는 걸 명심하세요.

root@instance-1:~# docker stop tomcat
tomcat
root@instance-1:~# docker rm tomcat
tomcat
root@instance-1:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

위 그림처럼 컨테이너 정보 조회시 리스트가 전부 삭제된 것을 볼 수 있습니다.

7. 도커 이미지 삭제 - docker rmi

도커 이미지 삭제 시 IMAGE ID가 필요합니다. 따라서 docker images 명령어를 통해 도커 이미지의 id를 조회 후 삭제 명령을 수행합니다.

root@instance-1:~# docker images
REPOSITORY   TAG                    IMAGE ID       CREATED       SIZE
tomcat       9.0.70-jdk8-corretto   616d03c63d58   3 weeks ago   379MB
root@instance-1:~# docker rmi 616d03c63d58
Untagged: tomcat:9.0.70-jdk8-corretto
Untagged: tomcat@sha256:93d42e4f4a441739bea9361d59917263d65d4d9b3c0e946b4ccd3ce939812f9c
Deleted: sha256:616d03c63d58dd627bf7393b607e050ffb946dabd72855089819d874368dacd6
Deleted: sha256:aa1fab66bd0cbd156e466efa90d200b4a4e922a1641fd7c1056a124b14b8fad8
Deleted: sha256:f4caf8d6fb798e269a57b701d3efdc5841b523b11cb5d07fcfa5fb0e945e682a
Deleted: sha256:66a38822666944902e9254bf634b890d4ef89cd004eb1d426d3467346908cd87
Deleted: sha256:1fb72e70e9a2e7df2bbeb354a5781b282fea9844ff0b2fbdfe76a483933af3ba
Deleted: sha256:3f800aca2a445ea5c4c1231bf5cf38838c9f0965f2ba3ed26b850f4b27db772d

네 이렇게 해서 GCP Ubuntu linux 위에서 도커 설치, 톰캣 컨테이너 이미지 다운, 컨테이너 생성/시작/중지/삭제 하고 도커 이미지까지 지워보는 방법에 대해 알아봤습니다.

 

tomcat 404 에러가 뜨시는 분들은 아래 링크를 참고해 주세요!

https://kitdow.tistory.com/26

 

[Docker] 도커 컨테이너 톰캣 404 에러 해결하기(Ubuntu linux에서 도커 톰캣 컨테이너로 tomcat 9.0 버전

안녕하세요. IT Window 킷도우입니다. 지난 번 포스팅에서 도커 설치, 톰캣 컨테이너 이미지 다운, 컨테이너 생성/시작/중지/삭제 방법에 대해서 알아봤었는데요. 못보신 분들은 아래 링크 참고하

kitdow.tistory.com

감사합니다!

반응형

댓글