일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- vgw
- cognito
- Custom Resource
- optional chaining
- 온프레미스
- VPC
- 단축 평가
- Service
- Endpoints
- grafana
- JavaScript
- On-Premise
- AWS
- docker swarm
- Await
- api gateway
- Site-to-Site VPN
- CloudFormation
- Kubernetes
- Proxy Resource
- 자바스크립트
- elasticsearch
- 비구조화 할당
- 옵셔널 체이닝
- docker
- prometheus
- transit gateway
- null 병합 연산자
- 구조분해 할당
- DynamoDB
- Today
- Total
만자의 개발일지
[Docker] Docker 이미지 ECR에 푸쉬하기 본문
도커 엔진에서 사용하는 기본 단위는 컨테이너와 이미지 입니다. 이 두 가지가 도커의 핵심이라고 할 수 있습니다.
앞서 Dockerfile을 사용하여 이미지를 만들어 보았습니다. 도커로 빌드한 이미지를 서버에 배포하기 위해 직접 파일을 복사하는 방법 대신 이미지 저장소에 이미지를 push한 후 서버에서 이미지를 pull받아 실행하는 방법을 사용합니다.
이번 포스팅에서는 AWS에서 제공하는 이미지 저장소인 ECR(Elastic Container Registry) 서비스를 이용하여 도커 이미지를 ECR에 push 한 후 서버에서 ECR에 있는 이미지를 불러오는 것 까지 해보도록 하겠습니다.
ECR 생성
먼저 이미지를 푸쉬할 ECR을 생성해봅시다.
AWS 콘솔에 들어가서 ECR을 검색한 후 들어갑니다.
그러면 다음과 같은 화면이 보일텐데 오른쪽 상단에 있는 Get Statrted 버튼을 클릭해줍니다.
그러면 ECR생성 화면이 뜰 것이고 Private 으로 할지 Public으로 할지 선택하라고 뜰 것입니다.
우리는 가볍게 테스트만 진행할거라 외부에 이미지를 공개할 필요는 없기 때문에 Private으로 생성해주도록 합니다.
Repositry name은 <자신의 Account ID>.dkr.ecr.<region>.amazonaws.com/<repository name> 입니다.
빈칸에 자신의 ECR repository 명을 입력해주시면 됩니다.
그 다음 Create repositry 버튼을 클릭해 주시면 됩니다.
이미지 push
이미지를 push하기 앞서 필자는 Bastion에서 작업하였고, 작업하기 위해서는 ECR IAM Role이 필요합니다.
이미지를 push하려면 aws ecr get-login-password 명령으로 authorization token 을 발급받아야 됩니다. 이 authorization token 은 12시간 동안 유효하며, 이미지를 저장할 때 마다 필요로 합니다.
$ aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
위 명령어를 통해 ECR에 대해 Docker 클라이언트를 인증할 수 있습니다.
aws ecr get-login-password 명령어로 docker authorization token을 발급받고 docker login 명령으로 넘겨줍니다.
인증까지 완료했으니 이제 이미지를 만들고 ECR로 생성된 이미지를 푸쉬해봅시다.
$ docker build . -t <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>
언제나 그랬듯이 docker build 명령어를 통해 이미지를 생성해줍니다. 여기서 중요한 것은 이미지의 REPOSITORY 정보를 ECR Repository URL로 지정해줘야 합니다.
이제 만든 이미지를 ECR로 푸쉬 해봅시다.
docker push 명령어를 통해 이미지를 푸쉬 할 수 있습니다.
$ docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository>:<tag>
The push refers to repository [<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>]
1d73d66b5d36: Pushed
ad01c5b0a66c: Pushed
62278a60c9bf: Pushed
.
.
.
위와 같은 결과가 뜬다면 업로드가 잘 진행되고 있는겁니다.
ECR로 돌아갔을때 위와 같이 이미지가 생성되었다면 성공적으로 업로드 된겁니다.
이제 원할때 마다 ECR에 있는 이미지를 pull 명령어를 통해 불러오실 수 있습니다.
ECR에 있는 이미지를 pull 하실 때는 아래와 같이 명령어를 사용해주시면 됩니다.
$ docker pull <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>
'Docker' 카테고리의 다른 글
[Docker] 컨테이너 내부에서 Host로 접근하기 (0) | 2022.02.24 |
---|---|
[Docker] Docker Compose 사용하기 (1) | 2022.02.23 |
[Docker] 이미지 태그에 timestamp 찍기 (1) | 2021.12.28 |
[Docker] Dockerfile 생성 후 build하기 (feat. Node.js, S3, EC2) (0) | 2021.12.20 |
[Docker] 호스트와 컨테이너 파일 시스템 연결 (0) | 2021.11.12 |