웹사이트 검색

AWS에서 Docker용 ECR(Elastic Container Registry)을 설정하는 방법


Amazon Elastic Container Registry(ECR)는 AWS의 관리형 컨테이너 레지스트리 서비스입니다. 이 서비스는 AWS 콘솔의 \Compute 아래에 있습니다. Docker 컨테이너 이미지를 저장, 관리 및 배포하는 데 사용됩니다. ECR은 Amazon Elastic Container Service(ECS)와 통합됩니다.

ECR을 사용하면 선불 수수료가 없습니다. 우리는 저장소에 저장한 데이터와 인터넷으로 전송된 데이터의 양에 대해서만 비용을 지불합니다. ECR 청구에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

계속 진행하기 전에 이 문서의 뒷부분에서 보게 될 몇 가지 용어를 이해해 봅시다.

레지스트리: 이미지 저장소를 만들고 그 안에 이미지를 저장할 수 있는 곳입니다.

인증 토큰: Docker 클라이언트는 이미지를 푸시하고 가져오기 전에 Amazon ECR 레지스트리에 AWS 사용자로 인증해야 합니다. 인증 자격 증명은 Docker에 전달하기 위해 제공되는 AWS CLI get-login 명령에서 검색할 수 있습니다.

저장소: 이미지 저장소에는 Docker 이미지가 포함되어 있습니다. 리포지토리 정책

이미지: Docker 이미지를 리포지토리로 푸시 및 풀할 수 있습니다. 이러한 이미지를 시스템에서 로컬로 사용할 수 있습니다.

이 기사에서는 ECR 레지스트리, 리포지토리를 생성하고 Docker 이미지를 푸시 및 풀하는 방법을 살펴봅니다. 이 문서를 처음 접하는 사람들이 이해하는 데 많은 노력이 필요하지 않도록 이 문서를 가능한 한 간단하게 유지하려고 노력할 것입니다.

전제 조건

  1. AWS 계정(없으면 생성)
  2. Ubuntu 18.04 서버 또는 EC2 Ubuntu 18.04 인스턴스(EC2 인스턴스가 없거나 배우고 싶은 경우 여기를 클릭하여 EC2 인스턴스를 생성하는 방법을 배우십시오.)
  3. Docker가 시스템에 사전 설치되어 있습니다.

우리는 무엇을 할 것입니까?

  1. AWS에 로그인합니다.
  2. ECR 저장소를 생성합니다.
  3. Linux 서버에 AWS CLI 설치
  4. 단말기에서 Docker 클라이언트를 인증하고 태그를 지정하고 로컬 이미지를 ECR 저장소에 업로드합니다.
  5. 로컬 시스템에서 이미지의 태그를 해제 및 삭제하고 ECR Repo를 가져옵니다.

AWS에 로그인

  1. AWS 로그인 페이지로 이동하려면 여기를 클릭하십시오.

위의 링크를 누르면 로그인 세부 정보를 사용하여 로그인해야 하는 다음과 같은 웹 페이지가 표시됩니다.

ECR 레포 생성

ECR Repo를 생성하려면 \서비스\ 근처의 화살표를 클릭하면 AWS 서비스 목록이 표시됩니다.

목록에서 \ECR\을 클릭합니다. 원하는 지역을 선택할 수 있습니다. 여기서는 파리로 진행합니다.

다음과 같은 화면이 나타납니다.

\시작하기를 클릭하여 최초의 저장소를 만드십시오.

이제 다음 화면에서 생성해야 하는 리포지토리에 원하는 이름을 지정합니다.

동일한 화면에서 사용 가능한 두 가지 옵션을 볼 수 있습니다.

  1. 태그 불변성:
    이 기능은 동일한 태그를 사용하는 후속 이미지 푸시가 이미지 태그를 덮어쓰는 것을 방지합니다.
  2. 푸시 스캔:
    이 기능을 사용하여 저장소로 푸시된 후 각 이미지가 자동으로 스캔되도록 푸시 스캔을 활성화할 수 있습니다.

지금은 이러한 기능을 활성화하지 않습니다.

진행하려면 \리포지토리 만들기를 클릭하기만 하면 됩니다.

이제 저장소를 사용할 준비가 된 것을 볼 수 있습니다.

Linux 서버에 AWS CLI 설치

또한 시스템에 \aws 명령이 필요합니다.

Ubuntu 시스템에 \aws를 설치하려면 다음 명령을 입력하면 됩니다.

apt-get  update
apt-get  install awscli

터미널에서 Docker 클라이언트를 인증하고 기존 이미지에 태그를 지정하고 ECR Repo에 업로드합니다.

시스템에 \aws 명령이 있으면 Docker 클라이언트를 레지스트리에 인증해야 하며 이를 위해서는 Docker가 설치된 시스템이 있어야 합니다.

Docker의 공식 페이지를 참조하여 시스템에 Docker를 설치할 수 있습니다.

\docker --version 명령어로 Docker 버전을 확인할 수 있습니다.

Docker 클라이언트를 레지스트리에 인증하기 전에 aws_access_key_id 및 aws_secret_access_key를 내보내야 합니다.

이에 대한 자세한 내용은 AWS의 공식 문서를 참조하세요.

다음 명령을 사용하여 필요한 키를 내보냅니다.

aws configure set aws_access_key_id YOUR_ACCESS_KEY
aws configure set aws_secret_access_key YOUR_SECRET_KEY
aws configure set default.region YOUR_DEFAULT_REGION
aws configure set default.output json

이러한 값을 내보내면 Docker 클라이언트를 레지스트리에 인증할 준비가 된 것입니다.

먼저 저장소를 클릭한 다음 \푸시 명령 보기를 클릭합니다.

\푸시 명령 보기를 클릭하면 필요한 모든 명령이 표시됩니다.

첫 번째 명령을 복사하고 시스템에서 실행하여 Docker 클라이언트를 Google 레지스트리에 인증합니다.

이제 ECR Repo로 푸시하거나 Dockerfile에서 자체 빌드할 Docker Hub에서 이미지를 가져옵니다. 여기서는 apache/httpd 이미지를 가져온 다음 푸시합니다.

docker pull httpd

로컬 시스템에서 사용 가능한 이미지를 보려면 이미지를 나열합니다.

docker images

나만의 이미지를 만들려면 두 번째 명령을 복사하거나 세 번째 명령으로 이동하여 실행합니다.

도커 태그 <이미지_이름>:<태그> :

여기있어,

도커 태그 httpd:latest 064827688814.dkr.ecr.eu-west-3.amazonaws.com/rahul-ecr-repo:latest

이미 저장소를 삭제했으므로 이 주소를 사용하지 마십시오.

이제 이미지를 ECR로 푸시할 준비가 되었습니다.

네 번째 명령을 복사하여 실행합니다.

이렇게 하면 이미지가 ECR Repo로 성공적으로 푸시됩니다.

로컬 시스템에서 이미지의 태그를 제거하고 삭제하고 ECR Repo에서 가져옵니다.

더 이상 필요하지 않은 경우 로컬 이미지를 삭제할 수 있습니다.

docker rmi <이미지_이름>

여기있어,

docker  rmo httpd

같은 방법으로 태그가 지정된 이미지를 로컬 시스템에서 삭제할 수 있습니다.

그런 다음 ECR 저장소에서 이미지를 가져올 수 있습니다.

리포지토리로 이동하여 이미지 URI를 복사합니다.

docker  pull “IMAGE_URI”

결론

이 문서에서는 ECR 저장소를 만들고, Docker 클라이언트에 로그인하고, 로컬 이미지에 태그를 지정하고, ECR 저장소에 푸시하고, 동일한 이미지를 가져오는 방법을 배웠습니다.