본문 바로가기
관리자

Project/Poppin

ECR로 Docker Image 옮기기

728x90
반응형

 

기존 Dockerhub에서 AWS ECR(Elastic Container Registry)로 Image registry를 옮겼다.

 

Dockerhub에 Image가 노출되는 것은 보안상 좋지 못하기 때문이다. 다만 다른 AZ나 리전으로 데이터 전송 시 비용이 들 수도 있다.

ref.) https://sangchul.kr/entry/aws-Amazon-ECR%ED%94%84%EB%9D%BC%EC%9D%B4%EB%B9%97-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC

 

1. ECR에서 리포지토리 생성

프라이빗 리포지토리 생성에서 리포지토리 생성 버튼을 누르고 이름만 지정하면 된다. 생성 후 URI 정보를 확인할 수 있다.

 

이후 다른 곳에서 리포지토리를 이용할 수 있도록 정책을 편집해준다.

ref.) https://rainbound.tistory.com/entry/AWS-ECR-push-retrying-%EB%AC%B8%EC%A0%9C

 

ECR 화면에서 좌측 패널상 Repositories - Permissions에 들어가서 아래 내용을 추가해주면 된다.

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "Statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:CompleteLayerUpload",
        "ecr:GetDownloadUrlForLayer",
        "ecr:InitiateLayerUpload",
        "ecr:PutImage",
        "ecr:UploadLayerPart"
      ]
    }
  ]
}

 

실제 운영 시 Principal 부분에 "*" 대신 권한 정보를 입력하여 특정 사용자들만 접근 가능하도록 해주어야한다.

 

 

 

2. 로컬 PC에서 aws-cli 로그인

$ aws ecr get-login-password --region {리전 이름} | docker login --username AWS --password-stdin {ECR상 URI}

 

- 리전이름: ap-northeast-2  (서울로 처리하는 경우)

- URI는 상기 ECR에서 확인하는 정보

 

 

3. 이미지 빌드 및 푸시

$ docker build . --platform linux/amd64 -t {ECR상 URI:태그이름}
$ docker push {ECR상 URI:태그이름}

 

 

4. EC2에서 로그인

EC2상 aws-cli 설치 및 로그인부터 진행해야한다.

$ sudo yum install aws-cli

 

로컬 PC에서 아래 사항을 확인한다.

$ aws configure list // aws AccessKey, Secret Key 확인
$ cat ~/.aws/config // 가려진 값까지 모두 확인

 

해당 내용이 설정되지 않은 경우, AWS 콘솔 우상단에서 보안 자격 증명에서 Access Key를 만들어서 처리해야한다. 나의 경우 처음 계정을 만들 때 이미 AccessKey와 SecretKey를 발급받고 등록해둔 상태였다.

 

정보 확인이 가능하다면, EC2의 터미널에서도 aws configure로 AccessKey, SecretKey를 붙여넣는다. 그리고 로그인까지 진행한다.

$ aws ecr get-login-password --region {리전 이름} | docker login --username AWS --password-stdin {ECR상 URI}

 

 

5. Image Run

이후 Image Run을 한다. pull 등 여러 action들이 가능하다.

$ docker run {-d -p 등 원하는 옵션} {ECR상 URI:태그명}
728x90
반응형