Among Us - Yellow Crewmate [Container] AWS ECR로 프라이빗 이미지 저장소 생성하기

DevOps/Docker

[Container] AWS ECR로 프라이빗 이미지 저장소 생성하기

감쟈! 2021. 3. 9. 23:11

ECR (Elastic Container Registry)

 

  • AWS ECR은 컨테이너 이미지를 저장, 관리, 공유 및 배포할 수 있는 완전관리형 컨테이너 레지스트리이다.

 

  • AWS ECR을 사용하면 자체 컨테이너 레포지토리를 운영하거나 기본 인프라 확장에 대해 걱정할 필요 없이 애플리케이션을 이미지화 시켜서 프라이빗 및 퍼블릭 저장소에서 관리한다.

 

  • AWS IAM을 사용하여 리소스 기반 권한으로 프라이빗 이미지 저장소를 지원하여 EC2 인스턴스가 레포지토리 및 이미지에 액세스 할 수 있다.

 

  • Docker hub의 역할을 ECR이 해줄 수 있으며, 개발자는 Docker CLI를 사용하여 이미지를 Push, Pull 하면서 관리할 수 있다.

 

ECR 레포지토리에 Push 되어있는 이미지들을 사용해서 ECS나 EKS에서 좀 더 효율적으로 컨테이너 애플리케이션을 관리 및 배포할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

AWS ECR로 프라이빗 컨테이너 이미지 저장소를 생성하고 이미지를 Push 해보도록 하자

 

 

실습 순서

1. IAM 사용자 권한 추가

2. AWS CLI 설치

3. Docker 설치

4. 도커 이미지 생성하기

5. ECR에 Docker CLI 인증하기

6. 프라이빗 레포지토리 생성하기

7. ECR 레포지토리에 이미지 Push 하기

8. ECR 레포지토리에서 이미지 Pull 하기


1. IAM 사용자 권한 추가

1.1 AWS 사용자가 ECR 서비스에 액세스 하기 위해서는 권한을 추가해줘야 한다.

 

IAM 사용자에게 AmazonEC2ContainerRegistryFullAccess 권한을 추가해 ECR 서비스에 액세스할 수 있도록 해주자.

IAM 사용자에게 권한 부여

 

 


2. AWS CLI 설치

2.1 ECR 레포지토리에 이미지 Push하기 위해서 AWS CLI를 설치해주자

 

docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2.html

 

AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

 

2.2 EC2 인스턴스에서 AWS CLI를 설치해주었다.

aws --version 명령어를 통해 설치가 된 것을 확인해주자.

aws --version

 

 

2.3 aws configure 명령어를 통해 사용자를 등록해주자. 

Access Key와 Secret Key는 본인의 키를 넣어주도록 하자

aws configure


3. Docker 설치

Docker CLI 를 사용해 이미지를 관리하기 때문에 Docker를 설치해 주어야 한다.

 

 

 

3.1 sudo yum -y update 명령어로 현재 인스턴스에 설치되어 있는 패키지들을 업데이트한다.

패키지 업데이트

 

 

3.2 amazon-linux-extras 레포지토리에서 docker를 설치해주자

docker 설치

 

 

3.3 설치된 도커를 실행시켜 주자

docker 실행


4. 도커 이미지 생성하기

ECR 레포지토리에 Push해줄 간단한 웹 애플리케이션 도커 이미지를 만들어주자

 

 

 

4.1 Dockerfile을 새로 생성해주자.

Dockerfile 생성

 

4.2 이미지화 시킬 Apache 웹 애플리케이션. index.html 

Dockerfile 작성

 

 

4.3 작성한 Dockerfile에서 도커 이미지를 빌드해주자

Dockerfile 이미지 빌드

 

 

4.4 docker images 명령어로 이미지가 제대로 생성 되었는지 확인해보자 

docker images 확인

 

 

4.5 새롭게 빌드된 도커 이미지를 실행시켜주자. 

-p 80:80 옵션으로 컨테이너에 노출된 80 포트를 호스트 80 포트로 매핑한다.

-it 옵션은 컨테이너안에서 터미널을 실행 가능하게 한다.

 

Could not reliably determine~~~~~~~~~~~ 문구는 무시하도록 하자

도커 이미지 실행

 

 

 

4.6 도커 이미지를 실행하면 Dockerfile 에서 작성한 웹 애플리케이션이 나타난다.

웹 애플리케이션 실행

 

 


5. ECR에 Docker CLI 인증하기

 

ECR에 Docker CLI을 인증하는 과정을 거쳐야 Docker명령을 통해 ECR에 이미지를 Push 할 수 있다.

 

 

aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com는

ECR의 URL 주소이니까 참고참고

 

5.1 AWS 계정 id 12자리 숫자와 리전으로 ECR에 인증해주자.

aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

 

 

ECR에 Docker 인증


6.  프라이빗 레포지토리 생성하기

도커 이미지를 관리 및 배포해줄 레포지토리를 생성해보자

 

 

6.1 ECR 콘솔에 접속하여 다음과 같이 프라이빗 레포지토리를 생성해준다.

AWS 콘솔에서 레포지토리 생성

 

 

 

6.2 CLI 명령어로 레포지토리를 생성하는 방법도 있다.

 

aws ecr create-repository \

--repository-name potato \

--image-scanning-configuration scanOnPush=true \

--region ap-northeast-2 \

 

CLI 명령어로 레포지토리 생성

 

 

6.3 potato 레포지토리가 생성되었다.!

레포지토리 생성


7. ECR에 레포지토리에 이미지 Push하기

이제 이미지도 생성했고, ECR에 프라이빗 레포지토리까지 생성했으니 레포지토리에 이미지를 Push 해보자

 

 

 

7.1 docker images 명령어로 저장되어 있는 이미지 확인하기

image 확인

 

 

7.2  docker tag potato:latest aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/potato:Yong

도커 이미지는 Tag로 식별하기 때문에 Tag를 달아주도록 하자

이미지 태그 달기

 

 

7.3 docker push aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/potato:Yong

 

potato 레포지토리에 docker push 명령어로 Yong 이라는 이미지를 Push한다

이미지 Push

 

 

7.4 potato 레포지토리에 Yong 이라는 이미지가 Push 되었다.

이미지 push


8. ECR 레포지토리에서 이미지 Pull 

 

 

8.1 반대로 docker pull 명령어를 통해서 ECR 프라이빗 레포지토리에 있는 이미지를 로컬로 받아올 수 있다.

 

'DevOps > Docker' 카테고리의 다른 글

[Docker] Docker File 작성하기  (0) 2021.03.25
[Docker] Docker 간단 명령어 정리  (0) 2021.03.24
[Docker] Docker 설치하기  (0) 2021.03.24