Post View

리눅스에서 도커 설치 및 사용하기

이번에는 도커를 설치 및 사용하는 방법을 알아보겠습니다.
도커를 설치하는 환경은 AWS(Amazon Web Services)의 EC2(e2.micro)에서 Amazon Linux 2 AMI를 이용했습니다.

그리고 톰캣을 80포트에 올릴 예정이므로 80 포트를 보안그룹에서 활성화 했습니다.

이제 ssh로 서버에 접속한 뒤 도커 패키지를 검색하고 설치합니다.

yum seach docker
yum install docker

y를 입력해서 도커를 설치합니다.
도커가 설치가 완료되었다면 'docker version'을 입력해서 도커가 정상적으로 설치되어있는지 확인해봅니다.

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

만약 버전 아래에 위와 같은 메시지가 나타났다면 도커가 정상적으로 실행되고 있지 않기 때문이므로 'service docker start' 를 입력해서 도커 서비스를 실행해줍니다.

도커 서비스가 실행되었다면 도커에 컨테이너로 올릴 사용할 이미지를 선택해야합니다.
저는 Tomcat을 컨테이너로 올려보도록 하겠습니다.

먼저 도커허브에서 톰캣 이미지를 찾아봅니다.
https://hub.docker.com/_/tomcat?tab=tags&name=latest&page=1

Tags에 보면 배포되는 이미지의 버전이 있는데 저는 latest(최신버전)로 작업했습니다.
만약 특정 버전을 사용하고 싶으시다면 Tags 탭에서 해당 버전의 이미지로 컨테이너를 실행하시면 됩니다.

docker run -d -p 80:8080 -v /home/ec2-user/tomcat/webapps:/usr/local/tomcat/webapps --name tomcatTest tomcat:latest

실행을 완료 했다면 'docker ps -a' 명령어를 통해 프로세스가 정상적으로 나타나는지 확인해줍니다.

'docker ps -a' 입력 시 나오는 내용에서 STATUS 부분이 인스턴스 상태 및 인스턴스가 동작한 시간입니다.
정상적으로 컨테이너가 올라갔으니 접속해보겠습니다.

톰캣이 구동되는 것은 확인이 되었지만 아직 webapps 폴더에 아무것도 없어서 404 Not Found가 발생했습니다.

테스트를 위해 프로젝트를 webapps에 넣고 테스트 해보겠습니다.
ROOT.war 파일을 다운로드 받은 뒤 webapps에 넣으면 같은 경로에 ROOT 폴더로 자동으로 배포되고, 배포가 끝난 뒤 링크에 접속하면 정상적으로 나타납니다.

처음 컨테이너를 실행했던 'docker run -d -p 80:8080 -v /home/ec2-user/tomcat/webapps:/usr/local/tomcat/webapps --name tomcatTest tomcat:latest' 명령어에서 -d는 백그라운드 실행입니다.
-d를 제외하고 다시 실행하면 현재 화면에서 컨테이너가 실행되며 다른작업이 불가능해집니다.

-p 의 경우 '-p host_port:container_port'의 형태로 작성합니다.
여기서는 '-p 80:8080'의 형태로 작성했는데, 80포트로 접근하는 경우 컨테이너 내부의 8080 포트를 실행해줍니다.

-v 는 '-v host_directory_path:container_directory_path'의 형태로 작성합니다.
호스트의 폴더와 컨테이너의 폴더를 공유하여 실제 데이터가 호스트의 폴더에 저장됩니다.
컨테이너가 삭제되면 내부에 저장된 데이터도 삭제되기 때문에, 삭제되어선 안되는 파일의 경우에는 호스트쪽에 저장되도록 해야합니다.

--name은 컨테이너의 이름을 정해줍니다.
'--name container name'의 형태로 작성하며, 이름을 정해주지 않으면 container id(945dfb9c7f1c)를 통해서 작업을 해야하므로 관리가 귀찮아지니 지정해주는 것이 좋습니다.

마지막으로 이미지의 이름인데 여기서는 'tomcat/latest'로 사용했습니다.
원래라면 docker pull tomcat/latest로 도커 이미지를 다운받은 뒤 run 명령어를 실행해야 하겠지만, run만 실행하더라도 해당 버전의 이미지 여부에 따라 이미지를 알아서 받습니다.

이외에 'docker exec -it tomcatTest bash' 명령어를 입력하면 컨테이너 내부로 접속할 수 있고, 'docker start tomcatTest', 'docker stop tomcatTest', 'docker restart tomcatTest'를 통해 해당 컨테이너를 시작, 중지, 재시작 할 수 있습니다.

마지막으로 docker stop 명령을 통해 중지된 인스턴스에 대해서는 'docker rm tomcatTest'를 사용하여 컨테이너 자체를 삭제할 수 있습니다.

일단은 제가 주로 사용하는 몇 가지 명령어만 간략하게 작성했고, 'docker'를 입력해보면 자세한 커맨드가 나오니 한번 훑어보시는 것을 추천드립니다.

조금 더 세부적인 사용 방법은 저도 충분히 사용한 뒤 작성해보도록 하겠습니다.

Comments