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, 관리 작업을 수행할 수 있다.