Posts AWS ECR(Elastic Container Registry) - 기초 개념
Post
Cancel

AWS ECR(Elastic Container Registry) - 기초 개념

AWS ECR (Elastic Container Registry)


AWS 관리형 컨테이너 이미지 레지스트리 서비 (AWS 환경 내에서 보안성, 확장성, 신뢰성을 갖춘 Docker 컨테이너 레지스트리 서비스를 제공)

  • AWS IAM을 사용한 리소스 기반 권한(Resource-based permissions)을 통해 프라이빗 리포지토리를 지원
    • 퍼블릭 컨테이너 이미지 리포지토리도 지원
    • 이를 통해 지정된 사용자 또는 인스턴스만 컨테이너 리포지토리와 이미지에 접근 가능하도록 제어할 수 있음
  • 선호하는 CLI를 사용하여 Docker 이미지, OCI 이미지, 그리고 OCI 호환 아티팩트를 push, pull, 관리할 수 있다.

OCI (Open Container Initiative)

컨테이너 이미지와 런타임의 형식을 표준화해, 특정 벤더에 종속되지 않고 어디서나 동일하게 컨테이너를 실행할 수 있도록 만든 규격 (https://opencontainers.org/)

OCI Image Spec

  • “컨테이너 이미지의 구조는 이렇게 생겨야 한다”
  • 예:
    • 레이어 구조
    • 메타데이터 형식
    • image manifest 규칙

OCI Runtime Spec

  • “컨테이너를 실행할 때 이 규칙을 따라라”
  • 예:
    • 프로세스 시작 방식
    • 네임스페이스 / cgroup 설정
    • rootfs 마운트 방식

결론

  • 실무 관점에서:
    • Docker로 만든 이미지를
    • ECR, Harbor 같은 레지스트리에 올리고
    • ECS, Kubernetes, containerd, CRI-O에서 그대로 실행 가능
    • 이게 가능한 이유가 바로 OCI 표준 덕분

주요 개념


Registry

각 AWS 계정마다 제공되는 프라이빗 리포지토리 공간

  • 레지스트리 안에서 하나 이상의 리포지토리를 생성할 수 있다.
  • 이러한 리포지토리는 AWS 환경 내에서 Docker 이미지, OCI 이미지, 기타 OCI 호환 아티팩트를 저장하고 배포할 수 있도록 해준다.

Repository

Docker 이미지, OCI 이미지, 기타 OCI 호환 아티팩트를 저장할 수 있는 공간

  • 하나의 Amazon ECR 레지스트리 안에는 컨테이너 이미지를 정리하기 위해 여러 개의 리포지토리를 가질 수 있다.

Registry / Repository를 폴더 구조로 비유하면

1
2
3
4
5
6
7
8
9
10
11
12
ECR Registry (AWS 계정당 1개)
├─ Repository: payment-api
│    ├─ payment-api:1.0
│    ├─ payment-api:1.1
│    └─ payment-api:latest
│
├─ Repository: settlement-batch
│    ├─ settlement-batch:2025-01
│    └─ settlement-batch:2025-02
│
└─ Repository: nginx
     └─ nginx:stable

Repository policy

  • 리포지토리 정책을 사용하여 리포지토리 및 그 안의 콘텐츠에 대한 접근을 제어할 수 있다.

Authorization token

  • 클라이언트는 이미지를 push 하거나 pull 하기 전에, AWS 사용자로서 Amazon ECR 프라이빗 레지스트리에 인증해야 한다.

Image

컨테이너 이미지를 리포지토리에 push 하거나, pull 할 수 있다.

  • 이 이미지들은:
    • 로컬 개발 환경에서 사용할 수도 있고
    • Amazon ECS의 태스크 정의나
    • Amazon EKS의 파드 명세(pod specification)에서 사용할 수도 있다.

ECR의 기능

Amazon ECR은 다음과 같은 기능을 제공

1. Lifecycle policies

  • 리포지토리에 있는 이미지의 수명 주기 관리를 돕는다.
  • 사용하지 않는 이미지를 정리하도록 하는 규칙을 정의할 수 있다.
  • 이 규칙은 실제 적용하기 전에 테스트할 수 있다.

2. Image scanning

  • 컨테이너 이미지에 포함된 소프트웨어 취약점을 식별하는 데 도움을 준다.
  • 각 리포지토리는 푸시 시 스캔(scan on push)이 되도록 설정할 수 있다.
    • 이 설정을 통해 리포지토리에 새 이미지가 푸시될 때마다 자동으로 스캔이 수행된다.
  • 이후 이미지 스캔 결과를 조회할 수 있다.

3. Cross-Region 및 cross-account replication

  • 리전 및 계정 간 복제는 필요한 위치에 이미지를 쉽게 배포할 수 있도록 해준다.
  • 이 기능은 레지스트리 설정으로 구성되며, 리전 단위로 적용된다.

4. Pull through cache rules

  • 업스트림 레지스트리(upstream registry) 의 리포지토리를, 프라이빗 Amazon ECR 레지스트리에 캐시할 수 있는 방법을 제공
  • 이 방법을 사용하면 Amazon ECR은 주기적으로 업스트림 레지스트리에 접근하여, 프라이빗 Amazon ECR 레지스트리에 캐시된 이미지가 최신 상태인지 확인

5. Repository creation templates

  • pull through cache, create on push, 또는 replication 작업 중 Amazon ECR이 자동으로 생성하는 리포지토리의 설정을 정의할 수 있게 해준다.
  • 다음과 같은 설정을 지정할 수 있다:
    • 태그 불변성
    • 암호화 설정
    • 리포지토리 정책
    • 라이프사이클 정책
    • 리소스 태그

6. Managed signing

  • 이미지가 Amazon ECR에 푸시될 때 암호학적 서명(cryptographic signature)을 자동으로 생성하여, 컨테이너 이미지 서명 과정을 단순화

7. Access Control

  • Amazon ECR은 AWS Identity and Access Management(IAM)을 사용하여 리포지토리에 대한 접근을 제어
  • 특정 권한을 가진 IAM 사용자, 그룹, 역할을 생성하여 Amazon ECR 리포지토리에 대해 push, pull, 관리 작업을 수행할 수 있다.

참고 자료


This post is licensed under CC BY 4.0 by the author.