AWS ECR, Docker login 연결

박종혁·2021년 12월 9일
4
post-thumbnail

목적

개인 docker hub에서 벗어나 공동으로 관리하는 cloud docker image hub 구성이 목표
cli 환경 내에서 docker image를 ECR에서 관리할 수 있도록 구성

추가정보

IAM을 인증과정을 거쳐 ECR 서비스 이용 가능
docker에 aws 계정 인증과정을 추가하면 직접 ECR 접근 가능

개요

  1. ECR repository 생성
  2. 해당 repository 접근 위한 IAM생성/권한 부여
  3. ECR-docker 로그인 위한 파일 설정
  4. docker image pull/push test

작업 환경

ubuntu 20.04 lts
docker 설치됨

과정

1. ECR repository 생성

AWS ECR 서비스 접속

생성할 때 private/public 여부 선택 및 이름 작성

기타 옵션들 설정 후 생성

생성 완료!

.
.
.

2. IAM 생성 및 권한 부여

기존의 사용자나 새로 생성한 IAM에 AmazonEC2ContainerResistry...관련된 권한중 필요한 권한 부여

기존의 엑세스 키를 사용하거나 새로 생성

.
.
.

3. ECR-docker 로그인 위한 파일 설정

필요한 모듈 설치

$ sudo apt install awscli (aws 서비스에 대한 명령어 사용을 위해 설치)
$ sudo apt install amazon-ecr-credential-helper (ecr 인증을 위한 모듈)

docker login 설정

~/.docker/config.json파일에 아래에 맞게 작성 (파일 존재하지 않으면 새로 생성)

docker version 1.13.0 미만인 경우

{	"auths" : {
		"credsStore": "ecr-login"
	}
}

docker version 1.13.0 이상인 경우
public과 각 계정에 대한 인증을 다르게 설정 가능

{
  	"auths" : {
		"credHelpers": {
			"public.ecr.aws": "ecr-login",
			"<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login"
		}
    }
}

AWS credential 설정

$ aws configure 명령어 실행 > 계정의 default 옵션 설정
AWS Access key ID / AWS Secret access key / region name / output format 설정
앞의 2개 옵션은 ~/.aws/credentials에 뒤의 2개 옵션은 ~/.aws/config에 저장됨

로그인 인증 과정 실행

aws cli version 1.17.10 이전
$ aws ecr get-login --region <region> --no-include-email

aws cli version 1.17.10 이후
$ aws ecr get-login-password --region <region>

명렁어 이후 출력되는 텍스트를 복사 붙여넣기로 작성
$ docker login -u AWS -p XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX https://[user_specific_uri].dkr.ecr.[region_name].amazonaws.com

Login Succeeded

해당 결과 출력되면 성공

.
.

에러 케이스
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

현재 입력한 로그인 값이 파일에 저장되는 것에 대한 에러
(저장을 원하지 않을 경우 로그인시 -p대신 --password-stdin 옵션을 이용)

.
.
.
파일에 값을 저장한 이후 ~/.docker/config.json파일을 열어보면 값이 변경되어 있는것을 확인 가능

.
.
.

4. Docker image push/pull

push

$ docker images 통해 로컬의 docker image 확인

image 리스트 중 push 원하는 docker image 찾은 후에 tagging
$ docker tag <docker_image_id 또는 repository:tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository:tag>
(git의 commit 같은 느낌으로 생각하면 좋음)

image push
$ docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository:tag>

이후 AWS ECR내의 push한 repository안에 image가 저장된 것을 확인할 수 있음

pull

$ docker pull <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository:tag>

$ docker images로 확인해보면 해당 image pull 된 것 확인 가능

profile
메모 메모

0개의 댓글