프로그래밍/도커

[도커] 14. ECR 무작정 사용하기

riroan 2023. 7. 9. 02:49

지금까지 도커 이미지를 관리하기 위한 원격 저장소로 도커 허브를 사용했다. AWS에서도 동일한 기능을 수행하는 서비스를 제공한다. 바로 ECR이다. ECR을 사용하면 AWS의 다른 기능과 연합하여 더욱 막강한 시너지를 낼 수 있다. ECR을 한번 사용해보자.

 

이용 요금

https://aws.amazon.com/ko/ecr/pricing/?did=ap_card&trk=ap_card 

 

완전관리형 컨테이너 레지스트리 – Amazon Elastic Container Registry 요금 - Amazon Web Services

Amazon Elastic Container Registry(Amazon ECR)는 어디에서나 컨테이너 소프트웨어를 손쉽게 저장, 공유 및 배포할 수 있는 완전관리형 컨테이너 레지스트리입니다. Amazon ECR을 사용하면 이미지와 아티팩트

aws.amazon.com

개인적으로 사용할 때는 요금이 정말 중요하다. ECR은 굉장히 저렴한 가격으로 사용할 수 있다.

프리티어라면 프라이빗 레포지토리를 500MB받을 수 있고 아니더라도 퍼블릭 레포지토리로 50GB를 받는다. ㄷㄷ 한도를 초과하는 경우 GB당 0.1달러라는데 넘을 일은 거의 없을 것 같다.

이미지 만들기

서버를 띄울 것도 아니고 그냥 이미지 업로드 다운로드를 사용할 것이기 때문에 정말 간단한 이미지를 만든다.

# Dockerfile
FROM ubuntu:22.04

ENTRYPOINT ["echo", "hello ECR"]

실제로 빌드하고 실행시키면 터미널에 "hello ECR"이라고 나올 것이다.


ECR 레포지토리 만들기

도커 이미지를 저장할 레포지토리를 만들어야 한다. CLI로도 만들 수 있지만 귀찮으니 대시보드에서 진행하자.

퍼블릭으로 만들것이다.

이름과 운영체제만 적당히 선택하면 된다. 정말 손쉽게 레포가 생성됐다.

 

ECR 로그인

ecr에 로그인하기 위해 ecr권한이 있는 사용자가 필요하다. IAM에서 ECR권한이 부여된 사용자를 생성한다.

ECR registry를 public로 사용할 것인지 private로 사용할 것인지에 따라 추가해야하는 권한이 다르다.

  • public: AmazonElasticContainerRegistryPublicFullAccess
  • private: AmazonEC2ContainerRegistryFullAccess

지금은 public을 사용할 것이니 AmazonElasticContainerRegistryPublicFullAccess를 선택한다.

그 후 해당 사용자로 들어가서 보안 자격 증명에 있는 액세스 키 만들기를 통해 액세스 키와 시크릿 키를 생성한다. 사용 사례는 CLI로 선택한다. 생성된 키는 잘 보관한다.

그 후 다음 명령을 입력하여 aws-cli 설정을 한다.

aws configure

access key와 secret key를 입력하라고 나올 것이다. 방금 생성한 키를 각각 넣자. 리전은 사용중인 리전을 넣으면 된다. 서울을 사용하고 있기 때문에 ap-northeast-2를 적었다. output format은 그냥 넘어가면 json으로 설정될 것이다.

 

이제 본격적으로 로그인을 하자.

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

위 명령어를 입력하면 ecr을 사용할 수 있도록 로그인이 된다. 도커 허브에 로그인할 때 사용하는 docker login명령의 ecr버전이다. 여기서 AWS_ID는 숫자로된 AWS 계정 ID를 입력하면 된다. 우측 상단에 사용자를 클릭하면 계정 ID가 나오는데 그걸 복사해서 넣으면 된다. 리전은 각자의 리전으로 대체한다.

이 화면이 나오면 성공이다.

 

이미지 빌드/푸시하기

이제 이미지를 빌드해야하는데 도커 허브에서 한 것처럼 태그의 형식을 맞춰야한다. 다음 명령어를 입력하면 된다.

docker build --tag {{ECR_URL}}/hello-ecr-repository .

ECR_URL은 ECR에서 레포지토리를 만들 때 이름 입력하는 곳에 있던 URL이다. 레포지토리 목록으로 가면 있을 것이다. 뒤에 hello-ecr-repository는 위에서 만든 ECR 레포지토리 이름이다. 이상태로 빌드하고 푸시해보자.

docker push {{ECR_URL}}/hello-ecr-repository

성공적으로 푸시된 것을 확인할 수 있다.

 

이미지 실행시키기

이제 잘 작동하는지 pull받아서 실행시키자.

docker rmi {{ECR_URL}}/hello-ecr-repository
docker run {{ECR_URL}}/hello-ecr-repository

성공적으로 pull받고 실행한 것을 확인할 수 있다.

'프로그래밍 > 도커' 카테고리의 다른 글

[도커] 13. 바인드 마운트 사용하기  (0) 2023.05.07
[도커] 12. dockerignore  (0) 2022.08.19
[도커] 11. 환경변수  (0) 2022.08.19
[도커] 10. 도커 네트워크  (3) 2022.08.15
[도커] 9. 도커 이미지 만들기  (0) 2022.01.03