[AWS] ECR (Elastic Container Registry)

hugingstar·2026년 3월 31일

AWS

목록 보기
15/18
post-thumbnail

관리대장 작성

  • VPC

    • yslee-VPC (10.17.0.0/16)
  • Subnet

    • PUB-2A (10.17.1.0/24)
    • PUB-2C (10.17.11.0/24)
  • IGW

    • IGW-00
  • Routing table

    • RT-PUB
      • Routing : 0.0.0.0/0 => IGW-00
      • Subnet : PUB-2A, PUB-2C (명시적)
  • Security Group

    • WEB-SG (22, 80, 443, ICMP)

EC2 Instance - Managed server

도커 설치 및 컨테이너 실행 과정

  • Docker 구성용
  • Ubuntu 22.04
  • EC2 Instance에서 Managed server 를 생성한다.

  • 퍼블릭 IP 활성화 하고, 아래 그림 확인하여 인스턴스를 추가한다.

  • 퍼블릭 IP 사용해서 인스턴스 안으로 들어간다.

  • root 계정의 패스워드 설정해주고, 계정을 root로 변경한다.
sudo passwd root

# root 계정
su -

  • 인스턴스 안에 Docker를 설치한다.
wget -O install_docker.sh https://raw.githubusercontent.com/Joes-s/docker-daemon/main/aws_install_docker.sh

  • 파일을 열어보면 도커 설치하는 과정을 자동화되어 있는 것이다.
  • sh파일을 사용해서 자동화으로 설치한다.
# 내용 확인
vi install_docker.sh

# 실행 권한 부여
chmod +x install_docker.sh

# 설치 시작
./install_docker.sh

# 설치 완료 확인
systemctl status docker.service

  • 도커에 로그인 한다.
# Docker version
docker --version

# Docker 로그인
docker login
  • 작업을 위해서 디렉토리를 하나 만든다. root 계정에서 진행한다.
# 디렉토리 생성 및 이동
mkdir docker && cd docker
# 경로 확인
pwd
# html 파일 생성
echo "AWS Docker Main Page" > index.html

  • Dockerfile을 만들어서 띄운다.
# Docker 파일
vi Dockerfile

# 작성한 내용
FROM nginx:1.28.3-alpine
LABEL email="yslee4050@gmail.com"
LABEL name="yslee"

COPY ./index.html /usr/share/nginx/html/index.html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

  • 이미지를 빌드한다.
docker build -t yslee-nginx:v1.0 .

  • 컨테이너를 실행시킨다. 80 포트 열어서 실행한다.
docker run -d --name nginx -p 80:80 yslee-nginx:v1.0

  • curl으로 테스트한다.
curl localhost

  • 퍼블릭 IP로 외부접속되는지 테스트한다.

  • 컨테이너를 종료한다.
docker container stop nginx

docker container rm nginx

docker container ps -a

ECR (Elastic Container Registry)

  • AWS에서 제공하는 ImageHub

  • 특징

    • Docker 호환성 (Docker pull/push)
    • IAM 인증 및 권한 제어
    • Lifecycle 정책 : 오래된 Image 자동 정리 가능
    • CI/CD 통합 용이, Region 별 Image 저장 및 전송 최적화, ECS/EKS에서 바로 사용 가능
  • ECR은 레파지토리 생성하는 것이다.

  • 레파지토리 생성을 눌러서 만든다.

  • 일반 설정에 이름만 설정하고 생성한다.

  • 프라이빗 레파지토리를 만들었다.

  • awscli를 설치한다.
sudo apt update && sudo apt install unzip -y

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

# 설치 확인
aws --version

  • 푸쉬 명령 보기를 누른다.

  • 리눅스에서 실행하기 때문에 리눅스 명령어를 사용한다.

  • 이 때, AccessKey를 받아놓은 것을 사용한다.
  • 아래의 명령어를 쓰고, 하라는대로 따라한다.
  • aws 정보를 입력해야 "푸시 명령"을 할 수 있다.
aws configure

  • aws configure 정보도 확인할 수 있다.
aws configure list

  • 이미지 만들어져 있는 것을 확인한다. 그리고 태그를 붙여본다.
  • 프라이빗 레파지토리 URI를 적어줘야한다.
# 태그 부여
docker tag yslee-nginx:v1.0 <<PRIVATE-REPOSITORY-URI>>

docker pusu <<PRIVATE-REPOSITORY-URI>>:v1.0

  • Push 완료

  • 이미지가 잘 올라간 것을 확인할 수 있다. 이미지 크기가 25 MB정도한다.

  • 이미지 삭제
docker image rm  <<PRIVATE-REPOSITORY-URI>>:v1.0

  • 이미지 태그 URI 사용하면 pull하면서 띄울 수 있다.
docker run -d --name nginx -p 80:80 <<PRIVATE-REPOSITORY-URI>>:v1.0

  • 외부에서 퍼블릭 IP로 접속해보기

  • 삭제순서

이미지들 삭제 > 프라이빗 레파지토리 삭제 > 인스턴스 삭제 > ... > VPC 삭제

0개의 댓글