Amazon Web Service (AWS)/EKS

EC2에 Docker 설치 후 ECR과 연동하기

Ssemi-Column 2022. 8. 19. 15:33
728x90

1. Docker 설치

1. yum 업데이트

$ sudo yum update -y

2. Docker 설치

$ sudo amazon-linux-extras install docker

3. sudo 명령어 없이 docker 명령어 사용

$ sudo usermod -a -G docker ec2-user

3. Docker 버전확인

docker -v

 

2. Docker hub에서 필요한 이미지

$ sudo docker pull openjdk:8
$ sudo docker pull openjdk:11
$ sudo docker pull openjdk:17
$ sudo docker pull jenkins/jenkins

2. 이미지 확인

sudo docker images


2. ECR 구축하기

1. AWS 접속 후 Elastic Container Registry 서비스로 이동

2. 리포지토리 생성

3. Private로 설정 후 Service 명으로 Repository 생성
   - Dockerfile 하나 당 하나의 Repository를 생성해야 하는 것 같다.


 


3. 스프링 프로젝트 Dockerfile 생성 후 Docker로 ecr에 올리기

1. (https://start.spring.io/) 적당한 프로젝트 생성

2. 간단한 Rest Api 작성

3. bootJar후 lib 폴더에 Dockerfile 작성 (나중에 Jenkins로 배포시 프로젝트 최상위에 작성)

FROM openjdk:8					# 기본 베이스 이미지를 openjdk:8 로 한다
ARG JAR_FILE=*.jar				# 해당 디렉토리의 모든 jar 파일을 JAR_FILE이란 이름으로 치환한다
COPY ${JAR_FILE} app.jar		# JAR_FILE로 치환한 jar 파일을 app.jar 라는 이름으로 복사한다
ENTRYPOINT ["java","-jar","/app.jar"] # Shell에 java -jar /app.jar 이름으로 실행한다

# 2번 3번은 꼭 필요한 명령어는 아니다

4. FileZila 등을 사용해서 EC2에 해당 서비스 디렉토리를 만들고 붙여넣는다.

5. AWS ECR 서비스에서 푸시 명령 보기 버튼을 선택

* 해당 서비스 디렉토리에서 위 명령어를 차례대로 입력한다.

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin ************.dkr.ecr.ap-northeast-2.amazonaws.com

- ECR에 업로드 하기 위한  토큰을 발급받는다 (12시간 ? 유효로 알고 있습니다)

docker build -t ex_service .

- 옮긴 Dockerfile의 내용을 바탕으로 ex_service 라는 docker 이미지를 만든다.

docker tag ex_service:latest **********.dkr.ecr.ap-northeast-2.amazonaws.com/ex_service:latest

- ECR의 버전관리를 위해 방금 만든 ex_service 라는 docker 이미지의 버전을 최신(latest)로 설정한다

docker push **********.dkr.ecr.ap-northeast-2.amazonaws.com/ex_service:latest

- ECR repository에 ex_service 이미지를 업로드한다.

6. 확인


1 ) Dockerfile을 사용하여 Jar 파일 또는 War 파일을 Docker 이미지로 만든다 (말만 Docker 이미지지 OCI 규격에 맞는 공통 이미지 이다) -> 나중엔 Jenkins로 Jar파일을 만들고 Docker build로 이미지 빌드

2 ) Docker push 를 사용하여 ECR에 Docker 이미지 업로드 -> 나중엔 Jenkins로 ECR에 업로드

3 ) Kube Service에서 ECR에 새로운 배포 이미지가 있으면 pull 받아 실행중인 Service를 최신 상태로 유지 -> 추후에 ArgoCD를 사용하여 구현

728x90
반응형
LIST