본문 바로가기

⭐ AWS/ECR

NginX 이미지를 생성하고 ECR에 저장하기

728x90
반응형

# 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 시작하기 을(를) 참조하세요.

다음 단계를 사용하여 이미지를 인증하고 리포지토리에 푸시합니다. Amazon ECR 자격 증명 헬퍼를 비롯한 추가 레지스트리 인증 방법은 레지스트리 인증 을(를) 참조하십시오.
  1. 인증 토큰을 검색하고 레지스트리에 대해 Docker 클라이언트를 인증합니다.PowerShell용 AWS Tools에 사용:
    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com
  2. 다음 명령을 사용하여 도커 이미지를 빌드합니다. 도커 파일을 처음부터 새로 빌드하는 방법에 대한 자세한 내용은 여기  지침을 참조하십시오. 이미지를 이미 빌드한 경우에는 이 단계를 건너뛸 수 있습니다.
    docker build -t nginx-test-01 .
  3. 빌드가 완료되면 이미지에 태그를 지정하여 이 리포지토리에 푸시할 수 있습니다.
    docker tag [다운받은 이미지 이름:이미지 태그] [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com/[업로드 할 레포지토리 이름:태그]
    docker tag nginx:latest [계정번호].dkr.ecr.ap-northeast-2.amazonaws.com/nginx-test-01:latest
  4. 다음 명령을 실행하여 이 이미지를 새로 생성한 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 이미지를 태깅하고 푸쉬하는 작업에 대해서 알아 보았습니다.

 

- 끝 -

728x90
반응형