-
EC2에 Docker 설치 후 ECR과 연동하기Amazon Web Service (AWS)/EKS 2022. 8. 19. 15:33728x90
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'Amazon Web Service (AWS) > EKS' 카테고리의 다른 글
EKS CI/CD 구축 (git, docker, argocd) - 2 Jenkins, GitLab, ArgoCD 연결 (0) 2022.08.30 EKS CI/CD 구축 (git, docker, argocd) - 1 환경 구성 (0) 2022.08.28 [EKS] Kubernetes 기본 명령어 (0) 2022.08.01 [EKS] EKS Cluster 구축 (0) 2022.08.01 [EKS] EKS 클러스터 구축 용 IAM 그룹 생성 (0) 2022.08.01