# Nginx 이미지를 생성 후 ECR에 저장
Amazon Elastic Container Registry(ECR)은 일종의 Dockerhub 라고 생각하면 쉽다.
Docker image를 ECR에 저장하고, 서비스 하는 방식이라고 생각하면 쉽다.
1. ECR 이미지 생성하기 > 프라이빗 영역을 클릭 후 레포지토리 생성을 클릭하여 이미지를 생성한다.
2. nginx-test-01 이라고 레포지토리 이름을 생성한다.
3. 생성한 레포지토리를 확인한다. > 정상적으로 생성이 되었다.
4. Docker image 생성
- EC2 리눅스 서버에 Docker를 설치 후 Docker image를 생성합니다.
sudo apt-get update
sudo apt-get install docker.io
- Dockerfile을 기반으로 Docker는 이미지를 빌드합니다.
- Dockerfie의 내용을 살펴봅니다.
# 내용 수정해야 함 (Dockerfile 내용을 전부 image로 빌드한다고 보면된다.)
FROM nginx
EXPOSE 80
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y curl && \
cd /tmp && \
apt-get install awscli -y && \
rm -rf /tmp/* && \
rm -rf /var/lib/apt/lists/*
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./index.html /usr/share/nginx/html/index.html
CMD nginx -g "daemon off;"
- 생성한 dockerfile을 빌드한다.
docker build -t nginx .
- 생성한 docker image를 확인
docker images
5. image를 tag하고 ECR로 Push 하기
- ECR에 로그인 하기 위해서는 접속한 인스턴스에 보안그룹 > IAM 역할 수정에서 해당 권한에 맞는 역할을 부여 해줘야 한다.
- aws configure를 통해 보안자격증명을 등록해 준다.
- 이미지를 태그 후 push 하기위해 Docker image를 생성한 서버에서 ECR로 로그인 합니다.
- 로그인은 아래의 명령어를 활용하여 진행한다.
sudo aws ecr get-login --no-include-email --region ap-northeast-2
- ECR login 수행
sudo $(aws ecr get-login --no-include-email --region ap-northeast-2)
6. Login Succeeded 메시지가 떴다면 정상적으로 로그인이 된 것으로 볼 수 있습니다.
- nginx image를 tagging한 후 각각 ECR로 PUSH합니다.
Amazon ECR의 Repositories에서 View push command를 클릭하여 build, tagging, push 명령어를 참조합니다.
- 푸쉬명령보기에서 명령어를 확인 후 실행 합니다. (3번과 4번의 명령어를 실행하여, 태깅 및 푸쉬를 실행 합니다.)
# 푸쉬보기 명령 내용
최신 버전의 PowerShell 및 Docker용 AWS Tools이(가) 설치되어 있는지 확인합니다. 자세한 내용은 Amazon ECR 시작하기 을(를) 참조하세요.
- 인증 토큰을 검색하고 레지스트리에 대해 Docker 클라이언트를 인증합니다.PowerShell용 AWS Tools에 사용:
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com
- 다음 명령을 사용하여 도커 이미지를 빌드합니다. 도커 파일을 처음부터 새로 빌드하는 방법에 대한 자세한 내용은 여기 지침을 참조하십시오. 이미지를 이미 빌드한 경우에는 이 단계를 건너뛸 수 있습니다.
docker build -t nginx-test-01 .
- 빌드가 완료되면 이미지에 태그를 지정하여 이 리포지토리에 푸시할 수 있습니다.
docker tag [다운받은 이미지 이름:이미지 태그] [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com/[업로드 할 레포지토리 이름:태그] docker tag nginx:latest [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com/nginx-test-01:latest
- 다음 명령을 실행하여 이 이미지를 새로 생성한 AWS 리포지토리로 푸시합니다.
docker push [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com/nginx-test-01:latest
- 빌드 내용 정리
ubuntu@ip-172-16-0-10:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 7fc6eeb86f9e 29 minutes ago 439MB
nginx latest f6987c8d6ed5 46 hours ago 141MB
ubuntu@ip-172-16-0-10:~$ sudo docker tag nginx:latest 계정번호예시:16011111111.dkr.ecr.ap-northeast-2.amazonaws.com/nginx:latest
ubuntu@ip-172-16-0-10:~$ sudo docker push 16011111111.dkr.ecr.ap-northeast-2.amazonaws.com/nginx:latest
The push refers to repository [16011111111.dkr.ecr.ap-northeast-2.amazonaws.com/nginx]
51a4ac025eb4: Pushed
4ded77d16e76: Pushed
32359d2cd6cd: Pushed
4270b63061e5: Pushed
5f5f780b24de: Pushed
2edcec3590a4: Pushed
latest: digest: sha256:2e87d9ff130deb0c2d63600390c3f2370e71e71841573990d54579bc35046203 size: 1570
- 태깅과 푸쉬가 완료되면 nginx 레포지토리에 각각 latest 태그를 기잔 도커 이미지가 저장 됩니다.
- ECR로 nginx 이미지를 태깅하고 푸쉬하는 작업에 대해서 알아 보았습니다.
- 끝 -
'⭐ AWS > ECR' 카테고리의 다른 글
ECR 로그인 및 예제 서비스 실행 하기 (1) | 2024.02.15 |
---|---|
ECR log-in 후 image 다운로드 (0) | 2022.03.14 |
ECR 에서 이미지 pull 하여 서버에 저장하기 (0) | 2021.12.23 |