[도커 설치하기 & 컨테이너 접속하기]
ssh -i chicken.pem ec2-user@13.209.48.204
터미널에서 해당 코드를 통해 aws에 접속한다.
sudo yum install docker-io --yes
터미널에서 도커를 설치한다. 마지막에 Complete!를 보면 설치가 완료된 것이다.
sudo systemcl start docker
도커 설치 후에 도커 데몬을 실행한다.
sudo setfacl -m user:ec2-user:rw /var/run/docker.sock
도커 권한을 부여한다. docker ps -a로 제대로 도커가 실행되는지 확인한다. 도커 컨테이너 아이디와 이미지, 명령어, 생성날짜와 상태등이 있다.
docker exec -it jira-container /bin/bash
컨테이너에 접속을 한다. 접속하고 ls로 들어가면 해당 컨테이너가 가지고 있는 파일 정보를 볼 수 있다.
[도커 이미지 만들기 및 실행 1,2]
Dockerfile을 생성해야 한다. vi Dockerfile을 통해서 도커파일을 생성할 수 있다.
FROM tomcat:9-jre8-alpine
//server.xml에 jndi 정보 및 구조정보
COPY server.xml /usr/local/tomcat/conf
//tomcat 폴더 클린
RUN rm -rf /usr/local/tomcat/webapps/ROOT.war
RUN rm -rf /usr/local/tomcat/webapps/ROOT
RUN rm -rf /usr/local/tomcat/webapps/examples
RUN rm -rf /usr/local/tomcat/webapps/host-manager
RUN rm -rf /usr/local/tomcat/webapps/amanger
//war 파일복사
COPY ROOT.war /usr/local/tomcat/webapps
//docker container의 timezone을 서울로 변경
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/%TZ /etc/localtime && echo
$tz> /ETC/TIMEZONE
//8080포트
expose8080
vi Dockerfile
cd /opt/tomcat/webapps/
cp ROOT.war ~
cd ..
cd conf/
chmod 777 conf
sudo chmod 777 conf
cd conf
cp server.xml~
sudo chmod 777 server.xml
cp server.xml~
도커파일을 만들고 server.xml과 ROOT.war 파일들을 홈폴더에 복사하며 권한을 777로 부여한다.
docker build -t review/aws .
도커 이미지를 빌드한다.
docker images
도커 이미지를 확인한다. 위에서 만든 review/aws 저장소가 확인 가능하다.
docker rmi
도커 이미지를 삭제할 떄 image를 삭제한다는 의미로 rmi이고 IMAGE ID를 입력해서 삭제한다.
//기존 tomcat server stop
sudo systemctl stop tomcat
//tomcat 서버 상태 확인
sudo systemctl status tomcat
이미지를 빌드하면, 톰캣을 잠시 꺼두어야 한다. 그리고 새로운 도커 이미지를 실행한다.
docker run -rm -d -p 8080:8080 review/aws
내가 만든 도커이미지 review/aws를 실행한다. docker ps -a로 실제 실행되었는지 확인할 수 있다.
[Docker Hub & Docker API - 1,2]
도커에 태그를 달고 도커파일을 이용해 이미지를 생성하고 서비스를 올렸다. 태그를 달고 허브에 이미지를 올려본다.
docker login
https://hub.docker.com 에서 계정을 가입해야한다. login 명령에 따라 아이디와 비밀번호를 입력해서 로그인한다. 로그인이 성공하면 Login Succeeded 문구가 뜬다.
docker tag review/aws:latest bloodjino/review:0.0.1
sudo docker push bloodjino/review:0.0.1
도커의 tag를 만들고 해당 정보를 docker에 push한다. 버전이 올라갈때마다 올려준다. 각 버저닝을 하는 방법이 있으니 공부해보면 좋다. 마지막에 모두 push가 끝나면 size가 나온다. dockerhub 홈페이지에 repository에 새로 생성된 저장소를 볼 수 있다.
General 밑에 수정을하고 update를 누르면 해당 정보가 저장된다. Docker commands에 해당 저장소 접근가능한 명령어가 나온다. 해당 정보를 들어가면 Docker pull을 받을 수 있는 저장소가 나온다. 따라서 docker pull을 이용해 어디에서나 내가 올린 image를 받을 수 있다. 기존의 인스턴스가 아닌 새롭게 생성된 인스턴스에서 접근이 가능하다.
새로운 AWS 인스턴스를 만들고 docker를 설치한다.
git pull reviews/aws
docker pull bloodjino/review:0.0.1
맨 처음에 0.0.1로 버저닝했던 docker image를 pull한다.
docker run --rm -d -p 8080:8080 bloodjino/review:0.0.1
도커 이미지를 docker run으로 실행한다. 하지만 오류가 난다. 500에러가 뜬다. RDS의 인바운드 규칙을 열어주어야 하기 때문이다. 새로운 aws는 새로운 ip주소를 가지고 있기 때문에 3306 mysql 포트를 열어주어야 한다. 참고로 mysql은 로컬에서 설치했기 때문에, 모든 인스턴스에서 오류없이 MYSQL을 적용하고 싶다면, docker 내부에 mysql도 같이 저장한다.
필수 링크 확인
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'회고 > aws&docker fastcampus' 카테고리의 다른 글
AWS/Docker 클라우드 패스트캠퍼스 챌린지 25일차 (0) | 2021.09.30 |
---|---|
AWS/Docker 클라우드 패스트캠퍼스 챌린지 24일차 (0) | 2021.09.29 |
AWS/Docker 클라우드 패스트캠퍼스 챌린지 22일차 (0) | 2021.09.27 |
AWS/Docker 클라우드 패스트캠퍼스 챌린지 21일차 (0) | 2021.09.26 |
AWS/Docker 클라우드 패스트캠퍼스 챌린지 20일차 (0) | 2021.09.25 |