

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Lightsail 컨테이너 서비스를 위한 Docker 이미지 빌드 및 테스트
<a name="amazon-lightsail-creating-container-images"></a>

Docker를 사용하면 컨테이너를 기반으로 하는 분산 애플리케이션을 빌드, 실행, 테스트 및 배포할 수 있습니다. Amazon Lightsail 컨테이너 서비스는 배포에서 Docker 컨테이너 이미지를 사용하여 컨테이너를 시작합니다.

이 가이드에서는 Dockerfile을 사용하여 로컬 시스템에 컨테이너 이미지를 생성하는 방법을 안내합니다. 이미지가 생성되면 이미지를 Lightsail 컨테이너 서비스에 푸시하여 배포할 수 있습니다.

이 가이드의 절차를 완료하려면 기본적으로 Docker가 무엇이고 어떻게 작동하는지를 이해해야 합니다. Docker에 대한 자세한 내용은 [Docker란 무엇인가?](https://aws.amazon.com/docker/) 및 [Docker 개요](https://docs.docker.com/get-started/overview/)를 참조하세요.

**목차**
+ [1단계: 필수 구성 요소 완성](#create-container-image-prerequisite)
+ [2단계: Dockerfile 생성 및 컨테이너 이미지 구축](#create-container-image-create-dockerfile)
+ [3단계: 새 컨테이너 이미지 실행](#create-container-image-run-container)
+ [(선택 사항) 4단계: 로컬 시스템에서 실행 중인 컨테이너 정리](#create-container-image-cleanup)
+ [컨테이너 이미지를 생성한 후의 다음 단계](#create-container-image-next-steps)

## 1단계: 필수 구성 요소 완성
<a name="create-container-image-prerequisite"></a>

시작하기 전에 컨테이너를 생성하는 데 필요한 소프트웨어를 설치한 다음 Lightsail 컨테이너 서비스에 푸시해야 합니다. 예를 들어, Lightsail 컨테이너 서비스와 함께 사용할 수 있는 컨테이너 이미지를 생성하고 구축하려면 Docker를 설치하고 사용해야 합니다. 자세한 내용은 [Amazon Lightsail 컨테이너 서비스용 컨테이너 이미지를 관리하기 위한 소프트웨어 설치](amazon-lightsail-install-software.md)를 참조하세요.

## 2단계: Dockerfile 생성 및 컨테이너 이미지 구축
<a name="create-container-image-create-dockerfile"></a>

Dockerfile을 생성하고 Dockerfile에서 `mystaticwebsite` Docker 컨테이너 이미지를 구축하려면 다음 절차를 완료하세요. 컨테이너 이미지는 Ubuntu의 Apache 웹 서버에서 호스팅되는 간단한 정적 웹 사이트에 사용됩니다.

1. 로컬 시스템에 Dockerfile을 저장할 `mystaticwebsite` 폴더를 생성합니다.

1. 방금 만든 폴더에 Dockerfile을 생성합니다.

   Dockerfile은 `.TXT`와 같은 파일 확장자를 사용하지 않습니다. 전체 파일 이름은 `Dockerfile`입니다.

1. 컨테이너 이미지를 구성하는 방법에 따라 다음 코드 블록 중 하나를 복사하여 Dockerfile에 붙여넣습니다.
   + **간단한 정적 웹 사이트 컨테이너 이미지를 Hello World 메시지와 함께 생성하려면** 다음 코드 블록을 복사하여 Dockerfile에 붙여넣습니다. 이 코드 샘플은 Ubuntu 18.04 이미지를 사용합니다. `RUN` 지침은 패키지 캐시를 업데이트하고 Apache를 설치 및 구성한 후 Hello World 메시지를 웹 서버의 문서 루트로 인쇄합니다. `EXPOSE` 지침은 컨테이너에 포트 80을 노출하고 `CMD` 지침은 웹 서버를 시작합니다.

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Write hello world message
     RUN echo 'Hello World!' > /var/www/html/index.html
     
     # Open port 80
     EXPOSE 80
     
     # Start Apache service
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```
   + **정적 웹 사이트 컨테이너 이미지에 사용자 고유의 HTML 파일 집합을 사용하려면** Dockerfile을 저장하는 폴더와 동일한 폴더에 `html` 폴더를 생성합니다. 그런 다음 HTML 파일을 해당 폴더에 넣습니다.

     HTML 파일이 `html` 폴더에 있으면 다음 코드 블록을 복사하여 Dockerfile에 붙여넣습니다. 이 코드 샘플은 Ubuntu 18.04 이미지를 사용합니다. `RUN` 지침은 패키지 캐시를 업데이트하고 Apache를 설치 및 구성합니다. `COPY` 지침은 html 폴더의 내용을 웹 서버의 문서 루트에 복사합니다. `EXPOSE` 지침은 컨테이너에 포트 80을 노출하고 `CMD` 지침은 웹 서버를 시작합니다.

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Copy html directory files
     COPY html /var/www/html/
     
     # Open port 80
     EXPOSE 80
     
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```

1. 명령 프롬프트 또는 터미널 창을 열고 Dockerfile을 저장할 폴더로 디렉터리를 변경합니다.

1. 다음 명령을 입력하여 폴더의 Dockerfile을 사용하여 컨테이너 이미지를 구축합니다. 이 명령은 이름이 `mystaticwebsite`인 새 Docker 컨테이너 이미지를 구축합니다.

   ```
   docker build -t mystaticwebsite .
   ```

   이미지가 성공적으로 구축되었음을 확인하는 메시지가 표시됩니다.

1. 다음 명령을 입력하여 로컬 시스템의 컨테이너 이미지를 확인합니다.

   ```
   docker images --filter reference=mystaticwebsite
   ```

   다음 예와 유사한 결과가 나타나 생성된 새 컨테이너 이미지를 보여줍니다.  
![\[Docker 이미지 명령의 결과\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/docker-images-command-result.png)

   새로 구축한 컨테이너 이미지를 사용하여 테스트하고 로컬 시스템에서 새 컨테이너를 실행할 준비를 마쳤습니다. 이 가이드의 다음 [3단계: 새 컨테이너 이미지 실행](#create-container-image-run-container) 섹션을 이어서 진행하세요.

## 3단계: 새 컨테이너 이미지 실행
<a name="create-container-image-run-container"></a>

생성한 새 컨테이너 이미지를 실행하려면 다음 단계를 완료하세요.

1. 명령 프롬프트 또는 터미널 창에서 다음 명령을 입력하여 가이드의 이전 [2단계: Dockerfile 생성 및 컨테이너 이미지 구축](#create-container-image-create-dockerfile) 섹션에서 구축한 컨테이너 이미지를 실행합니다. `-p 8080:80` 옵션은 컨테이너의 노출된 포트 80을 로컬 시스템의 포트 8080에 매핑합니다. `-d` 옵션은 컨테이너가 분리 모드에서 실행되도록 지정합니다.

   ```
   docker container run -d -p 8080:80 --name mystaticwebsite mystaticwebsite:latest
   ```

1. 다음 명령을 입력하여 실행 중인 컨테이너를 확인합니다.

   ```
   docker container ls -a
   ```

   다음 예와 유사한 결과가 나타나 실행 중인 새 컨테이너를 보여줍니다.  
![\[Docker 컨테이너 명령의 결과\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 컨테이너가 설정되고 실행 중인지 확인하려면 새 브라우저 창을 열고 `http://localhost:8080`을 찾습니다. 다음 예와 비슷한 메시지가 나타나는 것을 볼 수 있습니다. 이렇게 하면 컨테이너가 로컬 시스템에서 설정되어 실행 중인지 확인할 수 있습니다.  
![\[Docker 컨테이너에서 실행되는 정적 웹 사이트\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-mystaticsite-hello-world.png)

   새로 구축한 컨테이너 이미지를 Lightsail 컨테이너 서비스에 배포할 수 있도록 Lightsail 계정으로 푸시할 준비를 마쳤습니다. 자세한 내용은 [Amazon Lightsail 컨테이너 서비스에서 컨테이너 이미지 푸시 및 관리](amazon-lightsail-pushing-container-images.md)를 참조하세요.

## (선택 사항) 4단계: 로컬 시스템에서 실행 중인 컨테이너 정리
<a name="create-container-image-cleanup"></a>

Lightsail 컨테이너 서비스에 푸시할 수 있는 컨테이너 이미지를 생성했으니, 가이드의 절차에 따른 결과로 로컬 시스템에서 실행 중인 컨테이너를 정리해야 합니다.

로컬 시스템에서 실행 중인 컨테이너를 정리하려면 다음 단계를 완료하세요.

1. 다음 명령을 실행하여 로컬 시스템에서 실행 중인 컨테이너를 확인합니다.

   ```
   docker container ls -a
   ```

   다음과 유사한 결과가 나타나 로컬 시스템에서 실행 중인 컨테이너의 이름을 나열합니다.  
![\[Docker 컨테이너 명령의 결과\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 다음 명령을 실행하여 가이드의 앞부분에서 생성하여 실행 중인 컨테이너를 제거합니다. 이렇게 하면 컨테이너가 강제로 중지되고 영구적으로 삭제됩니다.

   ```
   docker container rm <ContainerName> --force
   ```

   명령에서 <ContainerName>을 중지할 컨테이너 이름으로 바꾸고 삭제합니다.

   예제:

   ```
   docker container rm mystaticwebsite --force
   ```

   이제 가이드를 따라 생성한 컨테이너가 삭제됩니다.

## 컨테이너 이미지를 생성한 후의 다음 단계
<a name="create-container-image-next-steps"></a>

컨테이너 이미지를 생성한 후 배포할 준비가 되면 해당 이미지를 Lightsail 컨테이너 서비스에 푸시합니다. 자세한 내용은 [Lightsail 컨테이너 서비스 이미지 관리](amazon-lightsail-pushing-container-images.md)를 참조하세요.

**Topics**
+ [1단계: 필수 구성 요소 완성](#create-container-image-prerequisite)
+ [2단계: Dockerfile 생성 및 컨테이너 이미지 구축](#create-container-image-create-dockerfile)
+ [3단계: 새 컨테이너 이미지 실행](#create-container-image-run-container)
+ [(선택 사항) 4단계: 로컬 시스템에서 실행 중인 컨테이너 정리](#create-container-image-cleanup)
+ [컨테이너 이미지를 생성한 후의 다음 단계](#create-container-image-next-steps)
+ [컨테이너 이미지 관리](amazon-lightsail-pushing-container-images.md)
+ [컨테이너 서비스 플러그인 설치](amazon-lightsail-install-software.md)
+ [ECR 프라이빗 리포지토리 액세스](amazon-lightsail-container-service-ecr-private-repo-access.md)

# 컨테이너 서비스에 대한 Lightsail 컨테이너 이미지 푸시, 보기 및 삭제
<a name="amazon-lightsail-pushing-container-images"></a>

Amazon Lightsail 컨테이너 서비스에서 배포를 생성할 때는 각 컨테이너 항목에 소스 컨테이너 이미지를 지정해야 합니다. Amazon ECR Public Gallery와 같은 퍼블릭 레지스트리의 이미지를 사용하거나 로컬 시스템에서 생성한 이미지를 사용할 수 있습니다. 이 설명서에서는 로컬 시스템에서 Lightsail 컨테이너 서비스로 컨테이너 이미지를 푸시하는 방법을 안내합니다. 컨테이너 이미지를 생성하는 방법에 대한 자세한 내용은 [컨테이너 서비스 이미지 생성](amazon-lightsail-creating-container-images.md)을 참조하세요.

**목차**
+ [사전 조건](#push-container-images-prerequisites)
+ [로컬 시스템에서 컨테이너 서비스로 컨테이너 이미지 푸시](#push-container-images)
+ [컨테이너 서비스에 저장된 컨테이너 이미지 보기](#view-pushed-container-images)
+ [컨테이너 서비스에 저장된 컨테이너 이미지 삭제](#delete-stored-container-images)

## 사전 조건
<a name="push-container-images-prerequisites"></a>

컨테이너 이미지를 컨테이너 서비스로 푸시하기 전에 다음 사전 조건을 완료하세요.
+ Lightsail 계정에 컨테이너 서비스를 생성합니다. 자세한 내용은 [Amazon Lightsail 컨테이너 서비스 생성](amazon-lightsail-creating-container-services.md)을 참조하세요.
+ 로컬 시스템에 자체 컨테이너 이미지를 생성하는 데 필요한 소프트웨어를 설치하고 이를 Lightsail 컨테이너 서비스로 푸시합니다. 자세한 내용은 [Amazon Lightsail 컨테이너 서비스용 컨테이너 이미지를 관리하기 위한 소프트웨어 설치](amazon-lightsail-install-software.md)를 참조하세요.
+ 로컬 시스템에서 Lightsail 컨테이너 서비스에 푸시할 컨테이너 이미지를 생성합니다. 자세한 내용은 [Amazon Lightsail 컨테이너 서비스의 컨테이너 이미지 생성](amazon-lightsail-creating-container-images.md)을 참조하세요.

## 로컬 시스템에서 컨테이너 서비스로 컨테이너 이미지 푸시
<a name="push-container-images"></a>

컨테이너 이미지를 컨테이너 서비스로 푸시하려면 다음 절차를 완료하세요.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 명령 프롬프트 또는 터미널 창에 다음 명령을 입력하여 현재 로컬 시스템에 있는 Docker 이미지를 확인합니다.

   ```
   docker images
   ```

1. 결과에서 컨테이너 서비스에 푸시할 컨테이너 이미지의 이름(리포지토리 이름)과 태그를 찾습니다. 이후 단계에서 사용해야 하므로 이름과 태그를 기록해 둡니다.  
![\[로컬 시스템의 Docker 컨테이너 이미지\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/amazon-lightsail-container-service-docker-images.png)

1. 다음 명령을 입력하여 로컬 시스템의 컨테이너 이미지를 컨테이너 서비스로 푸시합니다.

   ```
   aws lightsail push-container-image --region <Region> --service-name <ContainerServiceName> --label <ContainerImageLabel> --image <LocalContainerImageName>:<ImageTag>
   ```

   명령에서 다음과 같이 바꿉니다.
   + *<Region>*을 컨테이너 서비스가 생성된 AWS 리전으로 바꿉니다.
   + *<ContainerServiceName>*을 컨테이너 서비스의 이름으로 바꿉니다.
   + *<ContainerImageLabel>*을 컨테이너 서비스에 저장할 때 컨테이너 이미지에 지정하려는 레이블로 바꿉니다. 등록된 컨테이너 이미지의 여러 버전을 추적하는 데 사용할 수 있는 설명 레이블을 지정합니다.

     이 레이블이 컨테이너 서비스에서 생성한 컨테이너 이미지 이름의 일부가 됩니다. 예를 들어, 컨테이너 서비스 이름이 `container-service-1`이고, 컨테이너 이미지 레이블이 `mystaticsite`이며, 푸시하는 컨테이너 이미지의 첫 번째 버전인 경우 컨테이너 서비스에서 생성한 이미지 이름은 `:container-service-1.mystaticsite.1`입니다.
   + *<LocalContainerImageName>*을 컨테이너 서비스로 푸시하려는 컨테이너 이미지의 이름으로 바꿉니다. 이 절차의 이전 단계에서 컨테이너 이미지 이름을 지정했습니다.
   + *<ImageTag>*를 컨테이너 서비스로 푸시하려는 컨테이너 이미지의 태그로 바꿉니다. 이 절차의 이전 단계에서 컨테이너 이미지 태그를 지정했습니다.

   예제:

   ```
   aws lightsail push-container-image --region us-west-2 --service-name myservice --label mystaticwebsite --image mystaticwebsite:v2
   ```

   컨테이너 이미지가 컨테이너 서비스로 푸시되었음을 확인하는 다음 예와 유사한 결과가 나타납니다.  
![\[Lightsail 컨테이너 서비스로 푸시된 Docker 컨테이너 이미지\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/amazon-lightsail-container-service-pushed-image.png)

   Lightsail 콘솔의 컨테이너 서비스에서 푸시된 컨테이너 이미지를 확인하려면 이 설명서의 [컨테이너 서비스에 저장된 컨테이너 이미지 보기](#view-pushed-container-images) 섹션을 참조하세요.

## 컨테이너 서비스에 저장된 컨테이너 이미지 보기
<a name="view-pushed-container-images"></a>

컨테이너 서비스에 푸시되어 저장된 컨테이너 이미지를 보려면 다음 절차를 완료하세요.

1. [Lightsail 콘솔](https://lightsail.aws.amazon.com/)에 로그인합니다.

1. 왼쪽 탐색 창의 이미지에서 **컨테이너**를 선택합니다.

1. 저장된 컨테이너 이미지를 보려는 컨테이너 서비스의 이름을 선택합니다.

1. 컨테이너 서비스 관리 페이지에서 **이미지(Images)** 탭을 선택합니다.
**참고**  
컨테이너 서비스에 이미지를 푸시하지 않은 경우 **이미지(Images)** 탭이 표시되지 않습니다. 컨테이너 서비스에 대한 이미지 탭을 표시하려면 먼저 컨테이너 이미지를 서비스로 푸시해야 합니다.

   **이미지(Images)** 페이지에는 컨테이너 서비스로 푸시되어 현재 서비스에 저장된 컨테이너 이미지가 나열되어 있습니다. 현재 배포에서 사용 중인 컨테이너 이미지는 삭제할 수 없으며, 회색으로 표시된 삭제 아이콘과 함께 나열됩니다.  
![\[Lightsail 콘솔의 저장된 이미지 페이지\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/amazon-lightsail-container-services-stored-images-page.png)

   서비스에 저장된 컨테이너 이미지를 사용하여 배포를 생성할 수 있습니다. 자세한 내용은 Amazon Lightsail 컨테이너 서비스용 배포 생성 및 관리를 참조하세요.

## 컨테이너 서비스에 저장된 컨테이너 이미지 삭제
<a name="delete-stored-container-images"></a>

컨테이너 서비스에 푸시되어 저장된 컨테이너 이미지를 삭제하려면 다음 절차를 완료하세요.

1. [Lightsail 콘솔](https://lightsail.aws.amazon.com/)에 로그인합니다.

1. 왼쪽 탐색 창의 이미지에서 **컨테이너**를 선택합니다.

1. 현재 배포를 확인하려는 컨테이너 서비스의 이름을 선택합니다.

1. 컨테이너 서비스 관리 페이지에서 **이미지(Images)** 탭을 선택합니다.
**참고**  
컨테이너 서비스에 이미지를 푸시하지 않은 경우 **이미지(Images)** 탭이 표시되지 않습니다. 컨테이너 서비스에 대한 이미지 탭을 표시하려면 먼저 컨테이너 이미지를 서비스로 푸시해야 합니다.

1. 삭제할 컨테이너 이미지를 찾은 후 삭제(휴지통) 아이콘을 선택합니다.
**참고**  
현재 배포에서 사용 중인 컨테이너 이미지는 삭제할 수 없으며, 해당 삭제 아이콘은 회색으로 표시됩니다.

1. 확인 프롬프트가 표시되면 **예, 삭제합니다(Yes, delete)**를 선택하여 저장된 이미지를 영구적으로 삭제할지 확인합니다.

   저장된 컨테이너 이미지가 컨테이너 서비스에서 즉시 삭제됩니다.

# Docker AWS CLI및 컨테이너용 Lightsail 제어 플러그인 설치
<a name="amazon-lightsail-install-software"></a>

Amazon Lightsail 콘솔을 사용하여 Lightsail 컨테이너 서비스를 생성하고, Amazon ECR Public Gallery와 같은 온라인 퍼블릭 레지스트리의 컨테이너 이미지를 사용하여 배포를 생성할 수 있습니다. 사용자의 자체 컨테이너 이미지를 생성하고 컨테이너 서비스에 푸시하려면, 컨테이너 이미지를 생성하려는 동일한 컴퓨터에 다음과 같은 추가 소프트웨어를 설치해야 합니다.
+ **Docker** - Lightsail 컨테이너 서비스에서 사용할 수 있는 자체 컨테이너 이미지를 실행, 테스트 및 생성합니다.
+ **AWS Command Line Interface (AWS CLI)** - 생성한 컨테이너 이미지의 파라미터를 지정한 다음 Lightsail 컨테이너 서비스로 푸시합니다. 버전 2.1.1 이상은 Lightsail Control 플러그 인과 함께 사용할 수 있습니다.
+ **Lightsail 제어(lightsailctl) 플러그인** -가 로컬 시스템에 있는 컨테이너 이미지에 액세스할 수 AWS CLI 있도록 합니다.

이 가이드의 다음 섹션에서는 이러한 소프트웨어 패키지를 다운로드할 수 있는 위치와 설치 방법을 안내합니다. 컨테이너 서비스에 대한 자세한 내용은 [컨테이너 서비스](amazon-lightsail-container-services.md)를 참조하세요.

**목차**
+ [Docker 설치](#install-software-docker)
+ [설치 AWS CLI](#install-software-aws-cli)
+ [Lightsail Control 플러그 인 설치](#install-software-lightsailctl)
  + [Windows에 lightsailctl 플러그인 설치](#install-lightsailctl-on-windows)
  + [macOS에 lightsailctl 플러그인 설치](#install-lightsailctl-on-macos)
  + [Linux에 lightsailctl 플러그인 설치](#install-lightsailctl-on-linux)

## Docker 설치
<a name="install-software-docker"></a>

Docker는 Linux 컨테이너를 기반으로 하는 분산 애플리케이션을 구축, 실행, 테스트 및 배포할 수 있는 기술입니다. Lightsail 컨테이너 서비스와 함께 사용할 수 있는 자체 컨테이너 이미지를 생성하려면 Docker 소프트웨어를 설치하고 사용해야 합니다. 자세한 내용은 [Lightsail 컨테이너 서비스의 컨테이너 이미지 생성](amazon-lightsail-creating-container-images.md)을 참조하세요.

Docker는 최신 Linux 배포 버전(Ubuntu 등)을 비롯하여 macOS 및 Windows 등 다양한 운영 체제에서 사용할 수 있습니다. 특정 운영 체제에 Docker를 설치하는 방법에 대한 자세한 내용은 [Docker 설치 가이드](https://docs.docker.com/engine/installation/#installation)를 참조하세요.

**참고**  
항상 최신 Docker 버전을 설치해야 합니다. 이전 버전의 Docker는이 가이드의 뒷부분에 설명된 AWS CLI 및 Lightsail 제어(lightsailctl) 플러그인과 함께 사용할 수 없습니다.

## 설치 AWS CLI
<a name="install-software-aws-cli"></a>

 AWS CLI 는 명령줄 셸의 명령을 Lightsail사용하여와 같은 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. AWS CLI 를 설치하고 사용하여 로컬 시스템에서 생성된 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시해야 합니다.

 AWS CLI 는 다음 버전에서 사용할 수 있습니다.
+ **버전 2.x** – 일반적으로 사용 가능한 최신 버전의 AWS CLI입니다. 이 버전은의 최신 메이저 버전 AWS CLI 이며 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시하는 기능을 포함하여 모든 최신 기능을 지원합니다. 버전 2.1.1 이상은 Lightsail Control 플러그 인과 함께 사용할 수 있습니다.
+ **버전 1.x** - 이전 버전과의 호환성을 위해 사용할 수 AWS CLI 있는의 이전 버전입니다. 이 버전은 컨테이너 이미지를 Lightsail 컨테이너 서비스에 푸시하는 기능을 지원하지 않습니다. 따라서 버전 AWS CLI 2를 대신 설치해야 합니다.

 AWS CLI 버전 2는 Linux, macOS 및 Windows 운영 체제에서 사용할 수 있습니다. 이러한 운영 체제에를 설치하는 방법에 AWS CLI 대한 지침은 *AWS CLI 사용 설명서*[의 AWS CLI 버전 2 설치를](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) 참조하세요.

## Lightsail Control 플러그 인 설치
<a name="install-software-lightsailctl"></a>

Lightsail Control(lightsailctl) 플러그인은가 로컬 시스템에서 생성한 컨테이너 이미지에 AWS CLI 액세스할 수 있도록 하는 경량 애플리케이션입니다. 이 플러그 인을 사용하면 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시하여 서비스에 배포할 수 있습니다.

**시스템 요구 사항**
+ 64비트를 지원하는 Windows, macOS 또는 Linux 운영 체제가 필요합니다.
+ AWS CLI lightsailctl 플러그인을 사용하려면 버전 2를 로컬 시스템에 설치해야 합니다. 자세한 내용은 이 설명서 앞부분의 [AWS CLI설치](#install-software-aws-cli) 섹션을 참조하세요.

**최신 버전의 lightsailctl 플러그인 사용**

lightsailctl 플러그인은 때때로 향상된 기능으로 업데이트됩니다. lightsailctl 플러그인을 사용할 때마다 최신 버전을 사용하고 있는지 확인합니다. 새 버전이 지원되는 경우, 최신 기능을 사용하려면 최신 버전으로 업데이트하라는 메시지가 표시됩니다. 업데이트된 버전을 사용할 수 있는 경우 설치 프로세스를 반복하여 최신 버전의 lightsailctl 플러그인을 가져와야 합니다.

다음은 lightsailctl 플러그인의 모든 릴리스와 각 버전에 포함된 기능 및 개선 사항을 나열합니다.
+ **v1.0.0(2020년 11월 12일 릴리스)** - 최초 릴리스에서는 AWS CLI 버전 2가 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시하는 기능을 추가합니다.

### Windows에 lightsailctl 플러그인 설치
<a name="install-lightsailctl-on-windows"></a>

Windows에 lightsailctl 플러그인을 설치하려면 다음 절차를 완료하세요.

1. 다음 URL에서 실행 파일을 다운로드하고 `C:\Temp\lightsailctl\` 디렉터리에 저장합니다.

   ```
   https://s3.us-west-2.amazonaws.com/lightsailctl/latest/windows-amd64/lightsailctl.exe
   ```

1. **Windows 시작(Windows Start)** 버튼을 선택한 다음 `cmd`를 검색합니다.

1. 검색 결과에서 **명령 프롬프트(Command Prompt)** 애플리케이션을 마우스 오른쪽 버튼으로 클릭하고 **관리자 권한으로 실행(Run as administrator)**을 선택합니다.  
![\[관리자 권한으로 명령 프롬프트 실행\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/lightsailctl-cmd-run-as-administrator.png)
**참고**  
명령 프롬프트(Command Prompt)에서 디바이스를 변경할 수 있도록 허용할지 묻는 메시지가 나타날 수 있습니다. 설치를 계속하려면 **예(Yes)**를 선택해야 합니다.

1. 다음 명령을 입력하여 lightsailctl 플러그인을 저장한 `C:\Temp\lightsailctl\` 디렉터리를 가리키는 경로 환경 변수를 설정합니다.

   ```
   setx PATH "%PATH%;C:\Temp\lightsailctl" /M
   ```

   다음 예제와 비슷한 결과가 나타나야 합니다.  
![\[setx 명령에 대한 명령줄 응답\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/lighstailctl-setx-command.png)

이`setx` 명령은 1024자를 초과하여 잘립니다. PATH에 이미 여러 변수가 설정되어 있는 경우 다음 절차를 사용하여 경로 환경 변수를 수동으로 설정하세요.

1. **시작(Start)** 메뉴에서 **제어판(Control Panel)**을 클릭합니다.

1. **시스템 및 보안(System and Security)을** 선택한 다음 **시스템(System)을** 선택합니다.

1. **고급 시스템 설정**을 선택합니다.

1. **시스템 속성(System Properties)** 대화 상자에서 **고급(Advanced)** 탭을 선택한 다음 [**환경 변수(Environment Variables)**를 선택합니다.

1. **환경 변수(Environment Variables)** 대화 상자의 **시스템 변수(System Variables)** 상자에서 **경로(Path)**를 선택합니다.

1. **시스템 변수(System Variables)** 대화 상자 아래에 있는 **편집(Edit)** 버튼을 선택합니다.  
![\[Windows 시스템 변수\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/lightsail-windows-system-variables.png)

1. **신규(New)를** 선택한 후 다음 경로를 입력합니다.`C:\Temp\lightsailctl\`  
![\[Windows 환경 변수\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/lightsail-windows-edit-env-variable.png)

1. 세 개의 연속된 대화 상자에서 **확인(OK)**을 선택한 다음 **시스템(System)** 대화 상자를 닫습니다.

이제 AWS Command Line Interface (AWS CLI)를 사용하여 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시할 준비가 되었습니다. 자세한 내용은 [컨테이너 이미지 푸시 및 관리](amazon-lightsail-pushing-container-images.md)를 참조하세요.

### macOS에 lightsailctl 플러그인 설치
<a name="install-lightsailctl-on-macos"></a>

다음 절차 중 하나를 완료하여 macOS에 lightsailctl 플러그인을 다운로드하고 설치합니다.

**Homebrew 다운로드 및 설치**

1. 터미널 창을 엽니다.

1. 다음 명령을 입력하여 lightsailctl 플러그인을 다운로드하고 설치합니다.

   ```
   brew install aws/tap/lightsailctl
   ```
**참고**  
Homebrew에 대한 자세한 내용은 [Homebrew](https://brew.sh/) 웹 사이트를 참조하세요.

**수동 다운로드 및 설치**

1. 터미널 창을 엽니다.

1. 다음 명령을 입력하여 lightsailctl 플러그인을 다운로드하고 bin 폴더에 복사합니다.

   ```
   curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/darwin-amd64/lightsailctl" -o "/usr/local/bin/lightsailctl"
   ```

1. 다음 명령을 입력하여 플러그 인을 실행할 수 있도록 합니다.

   ```
   chmod +x /usr/local/bin/lightsailctl
   ```

1. 다음 명령을 입력하여 플러그 인의 확장 속성을 지웁니다.

   ```
   xattr -c /usr/local/bin/lightsailctl
   ```

이제 AWS CLI 를 사용하여 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시할 준비가 되었습니다. 자세한 내용은 [컨테이너 이미지 푸시 및 관리](amazon-lightsail-pushing-container-images.md)를 참조하세요.

### Linux에 lightsailctl 플러그인 설치
<a name="install-lightsailctl-on-linux"></a>

Linux에 Lightsail 컨테이너 서비스 플러그 인을 설치하려면 다음 절차를 완료하세요.

1. 터미널 창을 엽니다.

1. 다음 명령을 입력하여 lightsailctl 플러그인을 다운로드합니다.
   + AMD 64비트 아키텍처 버전의 플러그 인:

     ```
     curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-amd64/lightsailctl" -o "/usr/local/bin/lightsailctl"
     ```
   + ARM 64비트 아키텍처 버전의 플러그 인:

     ```
     curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-arm64/lightsailctl" -o "/usr/local/bin/lightsailctl"
     ```

1. 다음 명령을 입력하여 플러그 인을 실행할 수 있도록 합니다.

   ```
   sudo chmod +x /usr/local/bin/lightsailctl
   ```

   이제 AWS CLI 를 사용하여 컨테이너 이미지를 Lightsail 컨테이너 서비스로 푸시할 준비가 되었습니다. 자세한 내용은 [컨테이너 이미지 푸시 및 관리](amazon-lightsail-pushing-container-images.md)를 참조하세요.

# Amazon ECR 프라이빗 리포지토리에 대한 액세스 권한을 Lightsail 컨테이너 서비스에 부여
<a name="amazon-lightsail-container-service-ecr-private-repo-access"></a>

Amazon Elastic Container Registry(Amazon ECR)는 AWS Identity and Access Management (IAM)를 사용하는 리소스 기반 권한이 있는 프라이빗 리포지토리를 지원하는 AWS 관리형 컨테이너 이미지 레지스트리 서비스입니다. Amazon ECR 프라이빗 리포지토리 AWS 리전에 대한 액세스 권한을 Amazon Lightsail 컨테이너 서비스에 부여할 수 있습니다. 그런 다음 프라이빗 리포지토리에서 컨테이너 서비스로 이미지를 배포할 수 있습니다.

Lightsail 콘솔 또는 AWS Command Line Interface ()를 사용하여 Lightsail 컨테이너 서비스 및 Amazon ECR 프라이빗 리포지토리에 대한 액세스를 관리할 수 있습니다AWS CLI. 그러나 과정을 단순화하는 Lightsail 콘솔을 사용하는 것이 좋습니다.

컨테이너 서비스에 대한 자세한 내용은 [컨테이너 서비스](amazon-lightsail-container-services.md)를 참조하세요. Amazon ECR에 대한 자세한 내용은 [Amazon ECR 사용 설명서](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)를 참조하세요.

**목차**
+ [필수 권한](#ecr-private-repos-permissions)
+ [Lightsail 콘솔을 사용하여 프라이빗 리포지토리에 대한 액세스 관리](#ecr-private-repo-access-lightsail-console)
+ [AWS CLI 를 사용하여 프라이빗 리포지토리에 대한 액세스 관리](#ecr-private-repo-access-cli)
  + [Amazon ECR 이미지 풀러 IAM 역할 활성화 또는 비활성화](#activate-ecr-puller-role)
  + [Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인](#identify-ecr-repo-policy-statement)
    + [정책 문이 없는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-no-policy)
    + [정책 문이 있는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-existing-policy)

## 필수 권한
<a name="ecr-private-repos-permissions"></a>

Amazon ECR 프라이빗 리포지토리에 대한 Lightsail 컨테이너 서비스 액세스를 관리할 사용자는 IAM에서 다음 권한 정책 중 하나를 가지고 있어야 합니다. 자세한 내용은 **AWS Identity and Access Management 사용 설명서의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 섹션을 참조하세요.

**모든 Amazon ECR 프라이빗 리포지토리에 대한 액세스 권한 부여**

다음 권한 정책은 모든 Amazon ECR 프라이빗 리포지토리에 대한 액세스를 구성할 수 있는 권한을 사용자에게 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageEcrPrivateRepositoriesAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:SetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:DeleteRepositoryPolicy",
                "ecr:GetRepositoryPolicy"
            ],
            "Resource": "arn:aws:ecr:*:111122223333:repository/*"
        }
    ]
}
```

------

정책에서 *AwsAccountId*를 AWS 계정 ID 번호로 바꿉니다.

**특정 Amazon ECR 프라이빗 리포지토리에 대한 액세스 권한 부여**

다음 권한 정책은 특정 AWS 리전의 특정 Amazon ECR 프라이빗 리포지토리에 대한 액세스를 구성할 수 있는 권한을 사용자에게 부여합니다.

정책에서 아래 예제 텍스트를 사용자의 값으로 바꿉니다.
+ *AwsRegion* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다. Lightsail 컨테이너 서비스는 액세스하려는 프라이빗 리포지토리 AWS 리전 와 동일한에 있어야 합니다.
+ *AwsAccountId* - AWS 계정 ID 번호입니다.
+ *RepositoryName* - 액세스를 관리하려는 프라이빗 리포지토리의 이름입니다.

다음은 예제 값으로 채워진 권한 정책의 예제입니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageEcrPrivateRepositoriesAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:SetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:DeleteRepositoryPolicy",
                "ecr:GetRepositoryPolicy"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-private-repo"
        }
    ]
}
```

------

## Lightsail 콘솔을 사용하여 프라이빗 리포지토리에 대한 액세스 관리
<a name="ecr-private-repo-access-lightsail-console"></a>

Lightsail 콘솔을 사용하여 Amazon ECR 프라이빗 리포지토리에 대한 Lightsail 컨테이너 서비스의 액세스를 관리하려면 다음 절차를 완료하세요.

1. [Lightsail 콘솔](https://lightsail.aws.amazon.com/)에 로그인합니다.

1. 왼쪽 탐색 창의 이미지에서 **컨테이너**를 선택합니다.

1. Amazon ECR 프라이빗 리포지토리에 대한 액세스를 구성하려는 컨테이너 서비스의 이름을 선택합니다.  
![\[Lightsail 콘솔의 컨테이너 서비스\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-card.png)

1. **이미지(Images)** 탭을 선택합니다.  
![\[Lightsail 콘솔의 컨테이너 서비스 관리 페이지에 있는 이미지(Images) 탭\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-images-tab.png)

1. Amazon ECR 프라이빗 리포지토리에 컨테이너 서비스에 대한 액세스 권한을 부여하려면 **리포지토리 추가**를 선택합니다.
**참고**  
이전에 추가한 Amazon ECR 프라이빗 리포지토리에서 컨테이너 서비스에 대한 액세스를 제거하려면 **제거**를 선택할 수 있습니다.  
![\[이미지 탭의 Amazon ECR 프라이빗 리포지토리 섹션\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-ecr-repos-section.png)

1. 표시되는 드롭다운에서 액세스하려는 프라이빗 리포지토리를 선택한 다음 **추가(Add)**를 선택합니다.  
![\[Amazon ECR 프라이빗 리포지토리 드롭다운 선택\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-ecr-repos-selection.png)

   Lightsail이 보안 주체 Amazon 리소스 이름(ARN)을 포함하는 컨테이너 서비스에 대한 Amazon ECR 이미지 풀러 IAM 역할을 활성화하는 데 몇 분 정도 걸립니다. 그런 다음 Lightsail은 선택한 Amazon ECR 프라이빗 리포지토리의 권한 정책에 IAM 역할 보안 주체 ARN을 자동으로 추가합니다. 그러면 컨테이너 서비스에 프라이빗 리포지토리와 해당 이미지에 대한 액세스 권한이 부여됩니다. 프로세스가 완료되고 **계속(Continue)**을 선택할 수 있음을 나타내는 모달이 표시될 때까지 브라우저 창을 닫지 마세요.  
![\[권한이 Amazon ECR 프라이빗 리포지토리에 추가되고 있음을 확인하는 모달\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-ecr-repos-confirmation-modal.png)

1. 활성화가 완료되면 **계속(Continue)**을 선택합니다.

   선택한 Amazon ECR 프라이빗 리포지토리가 추가되면 페이지의 **Amazon ECR 프라이빗 리포지토리** 섹션에 나열됩니다. 이 페이지에는 프라이빗 리포지토리에서 Lightsail컨테이너 서비스로 이미지를 배포하는 방법에 대한 지침이 포함되어 있습니다. 프라이빗 리포지토리에서 이미지를 사용하려면 컨테이너 서비스 배포를 생성할 때 **이미지(Image)** 값으로 페이지에 표시되는 URI 형식을 지정합니다. 지정한 URI에서 예시 *\$1image tag\$1*를 배포하려는 이미지의 태그로 바꿉니다. 자세한 내용은 [컨테이너 서비스 배포 생성 및 관리](amazon-lightsail-container-services-deployments.md)를 참조하세요.  
![\[Amazon ECR 프라이빗 리포지토리 추가 후 다음 단계\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/container-service-ecr-repos-next-steps.png)

## AWS CLI 를 사용하여 프라이빗 리포지토리에 대한 액세스 관리
<a name="ecr-private-repo-access-cli"></a>

 AWS Command Line Interface (AWS CLI)를 사용하여 Amazon ECR 프라이빗 리포지토리에 대한 Lightsail 컨테이너 서비스 액세스를 관리하려면 다음 단계가 필요합니다.

**중요**  
과정을 단순화하기 때문에 Lightsail 콘솔을 사용하여 Amazon ECR 프라이빗 리포지토리에 대한 Lightsail 컨테이너 서비스 액세스를 관리하는 것이 좋습니다. 자세한 내용을 알아보려면 이 가이드 앞부분의 [Lightsail 콘솔을 사용하여 프라이빗 리포지토리에 대한 액세스 관리](#ecr-private-repo-access-lightsail-console)를 참조하세요.

1. **Amazon ECR 이미지 풀러 IAM 역할 활성화 또는 비활성화** -에 AWS CLI `update-container-service` 대한 명령을 사용하여 Amazon ECR 이미지 풀러 IAM 역할을 Lightsail 활성화 또는 비활성화합니다. 활성화하면 Amazon ECR 이미지 풀러 IAM 역할에 대한 보안 주체 Amazon 리소스 이름(ARN)이 생성됩니다. 자세한 내용은, 이 설명서의 [Amazon ECR 이미지 풀러 IAM 역할 활성화 또는 비활성화](#activate-ecr-puller-role) 섹션을 참조하세요.

1. **Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인** - Amazon ECR 이미지 풀러 IAM 역할을 활성화한 후 컨테이너 서비스로 액세스하려는 Amazon ECR 프라이빗 리포지토리에 기존 정책 문이 있는지 확인해야 합니다. 자세한 내용은, 이 설명서 뒷부분의 [Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인](#identify-ecr-repo-policy-statement)을 참조하세요.

   리포지토리에 기존 정책 문이 있는지에 따라 다음 방법 중 하나를 사용하여 IAM 역할 보안 주체 ARN을 리포지토리에 추가합니다.

   1. **정책 문이 없는 프라이빗 리포지토리에 정책 추가** - Amazon ECR용 `set-repository-policy` 명령을 사용하여 AWS CLI 컨테이너 서비스의 Amazon ECR 이미지 풀러 역할 보안 주체 ARN을 기존 정책이 있는 프라이빗 리포지토리에 추가합니다. 자세한 내용을 알아보려면, 이 가이드 뒷부분의 [정책 문이 없는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-no-policy)를 참조하세요.

   1. **정책 문이 있는 프라이빗 리포지토리에 정책 추가** - Amazon ECR용 `set-repository-policy` 명령을 사용하여 AWS CLI 컨테이너 서비스에 대한 Amazon ECR 이미지 풀러 역할을 기존 정책이 없는 프라이빗 리포지토리에 추가합니다. 자세한 내용을 알아보려면 이 가이드 뒷부분의 [정책 문이 있는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-existing-policy)를 참조하세요.

### Amazon ECR 이미지 풀러 IAM 역할 활성화 또는 비활성화
<a name="activate-ecr-puller-role"></a>

Lightsail 컨테이너 서비스에 대한 Amazon ECR 이미지 풀러 IAM 역할을 활성화하거나 비활성화하려면 다음 절차를 완료하세요. 에 대한 `update-container-service` 명령을 사용하여 AWS CLI Amazon ECR 이미지 풀러 IAM 역할을 활성화하거나 비활성화할 수 있습니다Lightsail. 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [update-container-service](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-container-service.html)를 참조하세요.

**참고**  
이 절차를 계속하려면 Lightsail 먼저 AWS CLI 를 설치하고에 맞게 구성해야 합니다. 자세한 내용은 [AWS CLI 가 Lightsail과 함께 작동하도록 구성](lightsail-how-to-set-up-and-configure-aws-cli.md)을 참조하세요.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 다음 명령을 입력하여 컨테이너 서비스를 업데이트하고 Amazon ECR 이미지 풀러 IAM 역할을 활성화 또는 비활성화합니다.

   ```
   aws lightsail update-container-service --service-name ContainerServiceName --private-registry-access ecrImagePullerRole={isActive=RoleActivationState} --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *ContainerServiceName* - Amazon ECR 이미지 풀러 IAM 역할을 활성화하거나 비활성화할 컨테이너 서비스의 이름입니다.
   + *RoleActivationState* - Amazon ECR 이미지 풀러 IAM 역할의 활성화 상태입니다. `true`를 지정하여 역할을 활성화하거나 `false`를 지정하여 비활성화합니다.
   + *AwsRegionCode* - 컨테이너 서비스의 AWS 리전 코드(예: `us-east-1`)입니다.

   예시:
   + Amazon ECR 이미지 풀러 IAM 역할 활성화

     ```
     aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
     ```
   + Amazon ECR mazon ECR 이미지 풀러 IAM 역할 비활성화

     ```
     aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=false} --region us-east-1
     ```

1. 경우에 따라 다음 작업을 수행합니다.
   + **Amazon ECR 이미지 풀러 역할을 활성화한 경우** - 이전 응답을 받은 후 30초 이상 기다립니다. 그리고 다음 단계로 계속 진행하여 컨테이너 서비스에 대한 Amazon ECR 이미지 풀러 IAM 역할의 보안 주체 ARN을 가져옵니다.
   + **Amazon ECR 이미지 풀러 역할 비활성화한 경우** - 이전에 Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN을 Amazon ECR 프라이빗 리포지토리의 권한 정책에 추가한 경우 리포지토리에서 해당 권한 정책을 제거해야 합니다. 자세한 내용은 **Amazon ECR 사용 설명서의 [프라이빗 리포지토리 정책 문 삭제](https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete-repository-policy.html)를 참조하세요.

1. 다음 명령을 입력하여 컨테이너 서비스에 대한 Amazon ECR 이미지 풀러 IAM 역할의 보안 주체 ARN을 가져옵니다.

   ```
   aws lightsail get-container-services --service-name ContainerServiceName --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *ContainerServiceName* - Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN을 가져올 컨테이너 서비스의 이름입니다.
   + *AwsRegionCode* - 컨테이너 서비스의 AWS 리전 코드(예: `us-east-1`)입니다.

   예제:

   ```
   aws lightsail get-container-services --service-name my-container-service --region us-east-1
   ```

   응답에서 ECR 이미지 풀러 IAM 역할 보안 주체 ARN을 찾습니다. 역할이 나열되면 복사하거나 기록해 둡니다. 이 가이드의 다음 섹션에 필요합니다. 다음으로, 컨테이너 서비스로 액세스하려는 Amazon ECR 프라이빗 리포지토리에 기존 정책 문이 있는지 확인해야 합니다. 이 설명서의 [Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인](#identify-ecr-repo-policy-statement) 섹션으로 계속 진행합니다.

### Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인
<a name="identify-ecr-repo-policy-statement"></a>

다음 절차를 사용하여 Amazon ECR 프라이빗 리포지토리에 정책 문이 있는지 확인합니다. Amazon ECR에 AWS CLI `get-repository-policy` 명령을 사용할 수 있습니다. 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [update-container-service](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-repository-policy.html)를 참조하세요.

**참고**  
이 절차를 계속하려면 먼저를 설치하고 Amazon ECR에 맞게 AWS CLI 구성해야 합니다. 자세한 내용은 **Amazon ECR 사용 설명서의 [Amazon ECR을 사용하여 설정](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)을 참조하세요.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 다음 명령을 입력하여 특정 프라이빗 리포지토리에 대한 정책 문을 가져옵니다.

   ```
   aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *RepositoryName* - Lightsail 컨테이너 서비스에 대한 액세스를 구성하려는 프라이빗 리포지토리의 이름을 선택합니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.

   예제:

   ```
   aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
   ```

   다음과 같은 응답 중 하나가 표시됩니다.
   + **RepositoryPolicyNotFoundException** - 프라이빗 리포지토리에 정책 문이 없습니다. 리포지토리에 정책 문이 없으면 이 가이드 뒷부분의 [정책 문이 없는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-no-policy) 섹션의 단계를 따릅니다.  
![\[정책 문이 없는 프라이빗 리포지토리를 대상으로 한 get-repository-policy 명령에 대한 응답\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-no-policy-statement.png)
   + **리포지토리 정책이 발견됨** - 프라이빗 리포지토리에 정책 문이 있으며 요청 응답에 표시됩니다. 리포지토리에 정책 문이 있으면 기존 정책을 복사한 다음 이 가이드 뒷부분의 [정책 문이 없는 프라이빗 리포지토리에 정책 추가](#ecr-private-repo-add-policy-existing-policy) 섹션의 단계를 따릅니다.  
![\[정책 문이 있는 프라이빗 리포지토리를 대상으로 한 get-repository-policy 명령에 대한 응답\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-existing-policy-statement.png)

### 정책 문이 없는 프라이빗 리포지토리에 정책 추가
<a name="ecr-private-repo-add-policy-no-policy"></a>

정책 문이 없는 Amazon ECR 프라이빗 리포지토리에 정책을 추가하려면 다음 절차를 완료하세요. 추가하는 정책에는 Lightsail 컨테이너 서비스의 Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN이 포함되어야 합니다. 그러면 컨테이너 서비스가 프라이빗 리포지토리에서 이미지를 배포할 수 있는 액세스 권한이 부여됩니다.

**중요**  
Lightsail은 사용자가 Lightsail 콘솔을 사용하여 액세스를 구성할 때 Amazon ECR 이미지 풀러 역할을 Amazon ECR 프라이빗 리포지토리에 자동으로 추가합니다. 이 경우 이 섹션의 절차를 사용하여 Amazon ECR 이미지 풀러 역할을 프라이빗 리포지토리에 수동으로 추가할 필요가 없습니다. 자세한 내용을 알아보려면 이 가이드 앞부분의 [Lightsail 콘솔을 사용하여 프라이빗 리포지토리에 대한 액세스 관리](#ecr-private-repo-access-lightsail-console)를 참조하세요.

 AWS CLI를 사용하여 프라이빗 리포지토리에 정책을 추가할 수 있습니다. 정책이 포함된 JSON 파일을 생성한 다음 Amazon ECR에 대한 `set-repository-policy` 명령으로 해당 파일을 참조하면 됩니다. 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [set-repository-policy](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html)를 참조하세요.

**참고**  
이 절차를 계속하기 전에를 설치하고 Amazon ECR에 맞게 AWS CLI 구성해야 합니다. 자세한 내용은 **Amazon ECR 사용 설명서의 [Amazon ECR을 사용하여 설정](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)을 참조하세요.

1. 텍스트 편집기를 열고 다음 정책 문을 새 텍스트 파일에 붙여 넣습니다.

------
#### [ JSON ]

****  

   ```
   { 
     "Version":"2012-10-17",		 	 	 
     "Statement": [
     {
         "Sid": "AllowLightsailPull-ecr-private-repo-demo",
         "Effect": "Allow",
         "Principal": {
           "AWS": "IamRolePrincipalArn"
         },
         "Action": [
           "ecr:BatchGetImage",
           "ecr:GetDownloadUrlForLayer"
         ]
       }
     ]
   }
   ```

------

   텍스트에서 *IamRolePrincipalArn*을 이 설명서의 앞부분에서 얻은 컨테이너 서비스의 Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN으로 바꿉니다.

1. 파일을 컴퓨터의 액세스 가능한 위치에 `ecr-policy.json`으로 저장합니다(예: Windows의 경우 `C:\Temp\ecr-policy.json`, macOS 또는 Linux의 경우 `/tmp/ecr-policy.json`).

1. 생성된 `ecr-policy.json` 파일의 경로 위치를 기록해 둡니다. 이 절차의 뒷부분에 나오는 명령에서 이 위치를 지정합니다.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 다음 명령을 입력하여 컨테이너 서비스로 액세스하려는 프라이빗 리포지토리에 대한 정책 문을 설정합니다.

   ```
   aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *RepositoryName* - 정책을 추가하려는 프라이빗 리포지토리의 이름입니다.
   + *path/to/* - 이 설명서의 앞부분에서 생성한 컴퓨터의 `ecr-policy.json` 파일 경로입니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.

   예시:
   + Windows의 경우:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
     ```
   + macOS 또는 Linux에서

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1
     ```

   이제 컨테이너 서비스에서 프라이빗 리포지토리와 해당 이미지에 액세스할 수 있습니다. 리포지토리의 이미지를 사용하려면 컨테이너 서비스 배포에 대한 **이미지(Image)** 값으로 다음 URI를 지정합니다. URI에서 예제 *태그*를 배포하려는 이미지의 태그로 바꿉니다. 자세한 내용은 [컨테이너 서비스 배포 생성 및 관리](amazon-lightsail-container-services-deployments.md)를 참조하세요.

   ```
   AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag
   ```

   URI에서 아래 예제 텍스트를 사용자의 값으로 바꿉니다.
   + *AwsAccountId* - AWS 계정 ID 번호입니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.
   + *RepositoryName* - 컨테이너 이미지를 배포할 프라이빗 리포지토리의 이름입니다.
   + *ImageTag* - 컨테이너 서비스에 배포할 프라이빗 리포지토리의 컨테이너 이미지 태그입니다.

   예제:

   ```
   111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage
   ```

### 정책 문이 있는 프라이빗 리포지토리에 정책 추가
<a name="ecr-private-repo-add-policy-existing-policy"></a>

정책 문이 있는 Amazon ECR 프라이빗 리포지토리에 정책을 추가하려면 다음 절차를 완료하세요. 추가하는 정책에는 기존 정책과 Lightsail 컨테이너 서비스의 Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN이 들어 있는 새 정책이 포함되어야 합니다. 이렇게 하면 프라이빗 리포지토리에 대한 기존 권한이 유지되는 동시에 컨테이너 서비스가 프라이빗 리포지토리의 이미지를 배포할 수 있는 액세스 권한도 부여됩니다.

**중요**  
Lightsail은 사용자가 Lightsail 콘솔을 사용하여 액세스를 구성할 때 Amazon ECR 이미지 풀러 역할을 Amazon ECR 프라이빗 리포지토리에 자동으로 추가합니다. 이 경우 이 섹션의 절차를 사용하여 Amazon ECR 이미지 풀러 역할을 프라이빗 리포지토리에 수동으로 추가할 필요가 없습니다. 자세한 내용을 알아보려면 이 가이드 앞부분의 [Lightsail 콘솔을 사용하여 프라이빗 리포지토리에 대한 액세스 관리](#ecr-private-repo-access-lightsail-console)를 참조하세요.

 AWS CLI를 사용하여 프라이빗 리포지토리에 정책을 추가할 수 있습니다. 기존 정책과 새 정책이 포함된 JSON 파일을 만들어 이를 수행합니다. 그런 다음 Amazon ECR에 대한 `set-repository-policy` 명령을 사용하여 해당 파일을 참조합니다. 자세한 내용은 *AWS CLI 명령 레퍼런스*의 [set-repository-policy](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html)를 참조하세요.

**참고**  
이 절차를 계속하려면 먼저를 설치하고 Amazon ECR에 맞게 AWS CLI 구성해야 합니다. 자세한 내용은 **Amazon ECR 사용 설명서의 [Amazon ECR을 사용하여 설정](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)을 참조하세요.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 다음 명령을 입력하여 특정 프라이빗 리포지토리에 대한 정책 문을 가져옵니다.

   ```
   aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *RepositoryName* - Lightsail 컨테이너 서비스에 대한 액세스를 구성하려는 프라이빗 리포지토리의 이름을 선택합니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.

   예제:

   ```
   aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
   ```

1. 응답에서 기존 정책을 복사하고 다음 단계로 계속 진행합니다.

   다음 예에서 강조 표시된 것처럼 큰따옴표로 묶인 `policyText`의 내용만 복사해야 합니다.  
![\[정책 문이 없는 프라이빗 리포지토리를 대상으로 한 get-repository-policy 명령에 대한 응답\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-existing-policy-copy-statement.png)

1. 텍스트 편집기를 열고 이전 단계에서 복사한 프라이빗 리포지토리의 기존 정책을 붙여 넣습니다.

   결과는 다음 예제와 같아야 합니다.  
![\[정책 문 JSON 파일 예제\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-existing-policy-statement-json.png)

1. 붙여 넣은 텍스트에서 `\n`을 줄 바꿈으로 바꾸고 나머지 `\`를 삭제합니다.

   결과는 다음 예제와 같아야 합니다.  
![\[편집된 정책 문 JSON 파일 예제\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-existing-policy-statement-json-edited.png)

1. 텍스트 파일 끝에 다음 정책 문을 붙여 넣습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowLightsailPull-ecr-private-repo-demo",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "IamRolePrincipalArn"
               },
               "Action": [
                   "ecr:BatchGetImage",
                   "ecr:GetDownloadUrlForLayer"
               ]
           }
       ]
   }
   ```

------

1. 텍스트에서 *IamRolePrincipalArn*을 이 설명서의 앞부분에서 얻은 컨테이너 서비스의 Amazon ECR 이미지 풀러 IAM 역할 보안 주체 ARN으로 바꿉니다.

   결과는 다음 예제와 같아야 합니다.  
![\[전체 정책 문 JSON 파일 예제\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-existing-policy-statement-json-completed.png)

1. 파일을 컴퓨터의 액세스 가능한 위치에 `ecr-policy.json`으로 저장합니다(예: Windows의 경우 `C:\Temp\ecr-policy.json`, macOS 또는 Linux의 경우 `/tmp/ecr-policy.json`).

1. `ecr-policy.json` 파일의 경로 위치를 기록해 둡니다. 이 절차의 뒷부분에 나오는 명령에서 이 위치를 지정합니다.

1. 명령 프롬프트 또는 터미널 창을 엽니다.

1. 다음 명령을 입력하여 컨테이너 서비스로 액세스하려는 프라이빗 리포지토리에 대한 정책 문을 설정합니다.

   ```
   aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode
   ```

   명령에서 아래 예 텍스트를 사용자의 값으로 대체합니다.
   + *RepositoryName* - 정책을 추가하려는 프라이빗 리포지토리의 이름입니다.
   + *path/to/* - 이 설명서의 앞부분에서 생성한 컴퓨터의 `ecr-policy.json` 파일 경로입니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.

   예시:
   + Windows의 경우:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
     ```
   + macOS 또는 Linux에서

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1
     ```

   다음 예와 비슷한 응답이 나타나는 것을 볼 수 있습니다.  
![\[set-repository-policy 명령에 대한 응답\]](http://docs.aws.amazon.com/ko_kr/lightsail/latest/userguide/images/ecr-set-policy-statement-response.png)

   `get-repository-policy` 명령을 다시 실행하면 프라이빗 리포지토리에 새로운 추가 정책 문이 표시됩니다. 이제 컨테이너 서비스에서 프라이빗 리포지토리와 해당 이미지에 액세스할 수 있습니다. 리포지토리의 이미지를 사용하려면 컨테이너 서비스 배포에 대한 **이미지(Image)** 값으로 다음 URI를 지정합니다. URI에서 예제 *태그*를 배포하려는 이미지의 태그로 바꿉니다. 자세한 내용은 [컨테이너 서비스 배포 생성 및 관리](amazon-lightsail-container-services-deployments.md)를 참조하세요.

   ```
   AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag
   ```

   URI에서 아래 예제 텍스트를 사용자의 값으로 바꿉니다.
   + *AwsAccountId* - AWS 계정 ID 번호입니다.
   + *AwsRegionCode* - 프라이빗 리포지토리의 AWS 리전 코드(예: `us-east-1`)입니다.
   + *RepositoryName* - 컨테이너 이미지를 배포할 프라이빗 리포지토리의 이름입니다.
   + *ImageTag* - 컨테이너 서비스에 배포할 프라이빗 리포지토리의 컨테이너 이미지 태그입니다.

   예제:

   ```
   111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage
   ```