ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EC2에 Docker 설치 후 ECR과 연동하기
    Amazon Web Service (AWS)/EKS 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

    댓글

Designed by Tistory.