1. 개요


AWS ECR(Elastic Container Registry)은 Docker 컨테이너 이미지를 안전하게 저장하고 관리할 수 있는 프라이빗 레지스트리 서비스다. Docker Hub가 공개 저장소라면, ECR은 AWS 환경에 최적화된 비공개 저장소라고 생각하면 된다.

이 글에서는 EC2 인스턴스에서 ECR에 저장된 Next.js 애플리케이션 이미지를 가져와 컨테이너로 실행하는 전체 과정을 다룬다. 각 명령어의 동작 원리와 보안 메커니즘을 깊이 있게 이해해보자.

마치 집에서 택배를 받아 물건을 꺼내 사용하는 것처럼, 클라우드 저장소에서 애플리케이션을 내려받아 실행하는 과정이다. 하지만 여기엔 보안 인증, 네트워크 설정, 프로세스 격리 등 많은 기술적 요소들이 숨어있다.

2. ECR 인증 (로그인)


2-1) 왜 ECR 인증이 필요한가?

Docker Hub와 달리 ECR은 프라이빗 레지스트리다. 집에 들어가려면 열쇠가 필요하듯, ECR에 접근하려면 인증이 필요하다. 이 인증 과정은 두 가지 목적을 가진다:

  1. 보안: 권한이 없는 사람이 이미지를 다운로드하거나 업로드하는 것을 방지한다
  2. 과금 추적: 누가 어떤 이미지를 사용하는지 추적하여 정확한 비용을 청구한다
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com

2-2) 명령어 상세 분석

이 명령어는 실제로는 두 개의 명령어가 파이프(|)로 연결된 것이다. 왼쪽 명령어의 출력을 오른쪽 명령어의 입력으로 전달하는 구조다.

첫 번째 부분: aws ecr get-login-password

aws ecr get-login-password --region ap-northeast-2

이 명령어가 하는 일:

  1. AWS IAM 자격 증명을 사용하여 ECR 서비스에 인증을 요청한다
  2. ECR은 GetAuthorizationToken API를 호출하여 base64로 인코딩된 인증 토큰을 생성한다