기존 Dockerhub에서 AWS ECR(Elastic Container Registry)로 Image registry를 옮겼다.
Dockerhub에 Image가 노출되는 것은 보안상 좋지 못하기 때문이다. 다만 다른 AZ나 리전으로 데이터 전송 시 비용이 들 수도 있다.
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:태그명}
'Project > Poppin' 카테고리의 다른 글
AWS EC2 다른 계정용 pem key 만들고 접속: Permission Denied error (1) | 2023.12.07 |
---|---|
poppin (0) | 2023.12.04 |
Kotlin No Args Plugin 및 not nullable on Entity (1) | 2023.12.03 |
스프링부트 Swagger 3.0, JPAAuditing, ZonedDateTime (1) | 2023.12.02 |
SpringBoot Kotlin 프로젝트 Docker, AWS로 서버 구성하기-2. RDS, Route 53, 로드밸런서 등 (0) | 2023.11.26 |