개요
docker hub, harbor 등 다양한 레파지 토리들이 있는데 그중 aws ECR 과 연결하는 실습을 하겠습니다.
사전 준비
일단 접속할 리눅스 서버에서 aws 콘솔 로그인을 합니다.
아래 2가지 글을 참고하여 aws 콘솔과 연결을 합니다.
2024.12.15 - [Public Cloud/AWS] - [AWS] IAM 계정 생성 후 AWS CLI console 연결하기
[AWS] IAM 계정 생성 후 AWS CLI console 연결하기
IAM 계정 생성하기 보안 자격 증명 (계정 별 설정)MFA (권장 사항)사용자의 키 값을 탈취 당했을 때를 방지하기 위하여 설정 키 값 등록하기아래 파일을 수정 직전에 얻은 키 정보 아래와 같이
www.estar987.com
2025.01.29 - [Public Cloud/AWS] - [AWS] Linux 환경에서 AWS CLI 설치하기
현재 연결이 완료된 상태입니다.
# aws sts get-caller-identity
{
"UserId": "AIDA4AQ3TYVK4ZDU2ZTKD",
"Account": "825765381461",
"Arn": "arn:aws:iam::825765381461:user/estar987"
}
AWS ECR 생성하기
ECR 서비스로 이동
- AWS 콘솔에서 Elastic Container Registry 검색하고 클릭하여 ECR 서비스 페이지로 이동합니다.
- 왼쪽 카테고리에서 [Public registry] - [Repository] 클릭 후 [리포지토리 생성]
- 리포지토리 이름 : petclinic
- 리포지토리 로고 업로드(선택)
- 간단한 설명 : spring petclinic
- 콘텐츠 유형 - x86-64, Linux
- 소개
- 사용방법
AWS CLI 연결을 위한 Access 키 생성하기
- IAM → [보안 자격 증명] - [액세스키 만들기] - Access Key, Secret Key 확인 및 저장
- Bastion Host(ubuntu Linux)에 AWS CLI 관리툴인 aws 설치
- 참고
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html
최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface
이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이
docs.aws.amazon.com
# sudo apt update
# sudo apt install -y unzip
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# unzip awscliv2.zip
# sudo ./aws/install
# aws --version
# aws-cli/2.17.36 Python/3.11.9 Linux/6.8.0-1012-aws exe/x86_64.ubuntu.24
AWS 프로파일 등록
# AWS CLI에서 AWS 서비스에 접근할 수 있는 자격 증명을 설정
aws configure
AWS Access Key ID [None]: AKIASJVPYM...
AWS Secret Access Key [None]: M7x...N
Default region name [None]: ap-northeast-2
Default output format [None]:json
# 현재 인증된 AWS 사용자가 누구인지 확인
aws sts get-caller-identity
{
"Account": "<ID>",
"UserId": "AID...M",
"Arn": "arn:aws:iam::<ID>:user/<NAME>"
}
푸시 명령 가이드 라인에 따라 명령 실행
# aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/i63abv4i48732h7
도커 파일 작성
# vi Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest
# Update installed packages and install Apache
RUN yum update -y && \
yum install -y httpd
# Write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure Apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
도커 빌드
# docker build -t petclinic .
이미지 태그 지정 후 리포지토리에 푸시
# docker tag petclinic:latest public.ecr.aws/i6a4i2h7/petclinic:latest
# docker push public.ecr.aws/i6a4i2h7/petclinic:latest
ECR에 이미지 생성 확인
업로드 된 컨테이너 확인 및 실행 - Bastion 서버(AWS EC2)
$ sudo apt update
$ sudo apt install docker.io
$ sudo usermod -a -G docker ubuntu
exit
!! logout후 다시 login
$ id
$ docker images
!! 아무것도 안 나옴
- 위의 이미지와 같이 URL 복사 후 아래 명령어에서 8080:8080 뒤에 본인의 URL을 복사 붙여넣기 합니다.
- 해당 명령어를 AWS Bastion 서버에서 실행합니다.
$ docker run --name petclinic -p 8080:8080 public.ecr.aws/i6a4i2h7/petclinic:latest
Unable to find image 'public.ecr.aws/i6a4i2h7/petclinic:latest' locally
latest: Pulling from i6a4i2h7/petclinic
a2e8122f4c85: Extracting 557.1kB/53.15MB
74cb50cecc7b: Downloading 49.65MB/81.24MB
c431491c76f6: Download complete
a7c23f3d5548: Download complete
확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cce25f21874 public.ecr.aws/i6a4i2h7/petclinic:latest "/bin/sh -c /root/ru…" 3 minutes ago Up 3 minutes 80/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp petclinic
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
public.ecr.aws/i6a4i2h7/petclinic latest afadcec2235b 27 minutes ago 286MB
AWS EC2 인바운드 규칙 수정 및 접속 테스트
IP주소:8080 으로 접속 테스트
리소스 삭제
[ECR] - [Public registry] - [Repository] - petclinic 선택 후 tag 이미지 모두 삭제 - petclinic 선택 후 tag 이미지 삭제
'Public Cloud > AWS' 카테고리의 다른 글
[AWS] Linux 환경에서 AWS CLI 설치하기 (0) | 2025.02.10 |
---|---|
[AWS] EC2 SSH Putty로 연결하기 (0) | 2025.01.29 |
[AWS] IAM 계정 생성 후 AWS CLI console 연결하기 (0) | 2024.12.15 |
[AWS] 비용 설정 (0) | 2024.12.15 |
[Devops]AWS ECR vs Docker Hub: 왜 AWS ECR을 선택해야 할까? (3) | 2024.11.05 |