

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建置和測試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 容器服務。例如，必須安裝並使用 Docker 來建立和建置容器映像，以用於 Lightsail 容器服務。如需詳細資訊，請參閱[安裝軟體以管理 Amazon Lightsail 容器服務的容器映像](amazon-lightsail-install-software.md)。

## 步驟 2：建立 Dockerfile 並建置容器映像
<a name="create-container-image-create-dockerfile"></a>

請完成下列程序來建立 Dockerfile，並利用其建置 `mystaticwebsite` Docker 容器映像。容器映像將用於 Ubuntu 上 Apache Web 伺服器所託管的簡單靜態網站。

1. 在您要存放 Dockerfile 的本機電腦上建立 `mystaticwebsite` 資料夾。

1. 在剛建立的資料夾中建立 Dockerfile。

   Dockerfile 不使用副檔名，例如 `.TXT`。完整的檔案名稱為 `Dockerfile`。

1. 根據您設定容器映像的方式，複製下列其中一個程式碼區塊並貼至 Dockerfile：
   + **若要建立具有 Hello World 訊息的簡單靜態網站容器映像**，請複製下列程式碼區塊並貼至 Dockerfile。此程式碼範本使用 Ubuntu 18.04 映像。`RUN` 指令會更新套件快取，以及安裝和設定 Apache，並將 Hello World 訊息寫至 Web 伺服器的文件根目錄。`EXPOSE` 指令會公開容器上的連接埠 80，而 `CMD` 指令會啟動 Web 伺服器。

     ```
     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 資料夾內容複製到 Web 伺服器的文件根目錄。`EXPOSE` 指令會公開容器上的連接埠 80，而 `CMD` 指令會啟動 Web 伺服器。

     ```
     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 建置容器映像。此命令會建置新的 Docker 容器映像，名為 `mystaticwebsite`。

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

   這時應該會出現確認映像建置成功的訊息。

1. 輸入下列命令來檢視本機電腦上的容器映像。

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

   這時應該會出現類似以下範例的結果，顯示所建立的新容器映像。  
![\[Docker 映像命令結果\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 若要確認容器已處於運作狀態，請開啟新的瀏覽器視窗並瀏覽至 `http://localhost:8080`。這時應該會出現類似以下範例的訊息。此訊息確認容器已在本機電腦上運作。  
![\[在 Docker 容器上執行的靜態網站\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/lightsail/latest/userguide/images/amazon-lightsail-container-service-pushed-image.png)

   請參閱本指南的下列[檢視在容器服務中儲存的容器映像](#view-pushed-container-images)章節，以在 Lightsail 主控台的容器服務中檢視已推送的容器映像。

## 檢視在容器服務上存放的容器映像
<a name="view-pushed-container-images"></a>

請完成下列程序，以檢視已推送並存放在容器服務上的容器映像。

1. 登入 [Lightsail 主控台](https://lightsail.aws.amazon.com/)。

1. 在左側導覽窗格中，選擇**容器**。

1. 選擇您要檢視其存放容器映像之容器服務的名稱。

1. 在容器服務管理頁面上，選擇 **Images** (映像) 索引標籤。
**注意**  
如果您尚未將映像推送到容器服務，則不會顯示 **Images** (映像) 索引標籤。若要顯示容器服務的 Images (映像) 索引標籤，您必須先將容器映像推送到服務。

   **Images** (映像) 頁面會列出已推送到容器服務且目前存放在服務上的容器映像。目前部署中正在使用的容器映像無法刪除，並以灰色的刪除圖示列出。  
![\[Lightsail 主控台的已存放映像頁面\]](http://docs.aws.amazon.com/zh_tw/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** (映像) 索引標籤。若要顯示容器服務的 Images (映像) 索引標籤，您必須先將容器映像推送到服務。

1. 尋找您要刪除的容器映像，然後選擇刪除 (垃圾桶) 圖示。
**注意**  
目前部署中正在使用的容器映像無法刪除，且其刪除圖示會呈現灰色。

1. 在出現的確認提示中，選擇 **Yes, delete** (是，刪除) 以確認要永久刪除存放的映像。

   您存放的容器映像會立即從容器服務中刪除。

# 安裝 Docker AWS CLI，以及容器的 Lightsail Control 外掛程式
<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 Control (lightsailctl) 外掛程式使用。

## 安裝 AWS CLI
<a name="install-software-aws-cli"></a>

 AWS CLI 是一種開放原始碼工具，可讓您Lightsail使用命令列 shell 中的命令與 等 AWS 服務互動。您必須安裝並使用 ， AWS CLI 將本機電腦上建立的容器映像推送至您的Lightsail容器服務。

 AWS CLI 在以下版本中提供：
+ **2.x 版** – AWS CLI目前全面推出的版本。這是 的最新主要版本 AWS CLI ，並支援所有最新功能，包括將容器映像推送至Lightsail容器服務的功能。2.1.1 版本及更高版本適用於 Lightsail Control 外掛程式。
+ **1.x 版** – AWS CLI 可用於回溯相容性的舊版 。此版本不支援將容器映像推送到 Lightsail 容器服務的功能。因此，您必須改為安裝 第 2 AWS CLI 版。

第 2 AWS CLI 版適用於 Linux、macOS 和 Windows 作業系統。如需如何在這些作業系統 AWS CLI 上安裝 的指示，請參閱*AWS CLI 《 使用者指南*》中的[安裝 第 2 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。

## 安裝 Lightsail Control 外掛程式
<a name="install-software-lightsailctl"></a>

Control Lightsail(lightsailctl) 外掛程式是一種輕量型應用程式，可讓 AWS CLI 存取您在本機電腦上建立的容器映像。它允許您將容器映像推送到 Lightsail 容器服務，以便您可以將這些映像部署到相關服務。

**系統要求**
+ 支援 64 位元的 Windows、macOS 或 Linux 作業系統。
+ AWS CLI 版本 2 必須安裝在本機電腦上，才能使用 lightsailctl 外掛程式。如需詳細資訊，請參閱本指南前述的[安裝 AWS CLI](#install-software-aws-cli) 一節。

**使用最新版本的 lightsailctl 外掛程式**

lightsailctl 外掛程式偶爾會以增強功能更新。每次使用 lightsailctl 外掛程式時，都會執行檢查，以確認您使用的是最新版本。如果發現有可用的新版本，系統會提示您更新至最新版本以運用最新功能。當更新版本可用時，您必須重複安裝程序，以取得最新版本的 lightsailctl 外掛程式。

以下列出 lightsailctl 外掛程式的所有版本，以及每個版本隨附的功能和增強功能。
+ **v1.0.0 (2020 年 11 月 12 日發行）** – 初始版本為第 2 AWS CLI 版新增將容器映像推送至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 Start** (開始) 按鈕，然後搜尋 `cmd`。

1. 在結果中，以右鍵按一下 **Command Prompt** (命令提示) 應用程式，然後選擇 **Run as administrator** (以管理員身分執行)。  
![\[以管理員身分執行命令提示\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/lightsailctl-cmd-run-as-administrator.png)
**注意**  
您可能會看到提示，其中會詢問您是否要允許命令提示對裝置進行變更。您必須選擇 **Yes** (是) 以繼續安裝。

1. 輸入下列命令來設定路徑環境變數，該變數會指向您儲存 lightsailctl 外掛程式的`C:\Temp\lightsailctl\`目錄。

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

   您應該會看到類似以下範例的結果。  
![\[對 setx 命令的命令列回應\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/lightsail/latest/userguide/images/lightsail-windows-system-variables.png)

1. 選擇 **New** (新增)，然後輸入下列路徑：`C:\Temp\lightsailctl\`  
![\[Windows 環境變數\]](http://docs.aws.amazon.com/zh_tw/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)。

# 授予Lightsail容器服務對 Amazon ECR 私有儲存庫的存取權
<a name="amazon-lightsail-container-service-ecr-private-repo-access"></a>

Amazon Elastic Container Registry (Amazon ECR) 是一種 AWS 受管容器映像登錄服務，使用 AWS Identity and Access Management (IAM) 支援具有資源型許可的私有儲存庫。您可以讓Amazon Lightsail容器服務存取 Amazon ECR 私有儲存庫 AWS 區域。然後，可以將映像從私有儲存庫部署至容器服務。

您可以使用 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 映像 puller 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>

管理 Lightsail 容器服務對於 Amazon ECR 私有儲存庫的存取權的使用者必須在 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 主控台管理 Lightsail 容器服務對於 Amazon ECR 私有儲存庫的存取權。

1. 登入 [Lightsail 主控台](https://lightsail.aws.amazon.com/)。

1. 在左側導覽窗格中，選擇**容器**。

1. 選擇想要為其設定對 Amazon ECR 私有儲存庫存取權的容器服務名稱。  
![\[Lightsail 主控台中的容器服務\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/container-service-card.png)

1. 選擇 **Images** (映像) 索引標籤。  
![\[Lightsail 主控台容器服務管理頁面中的 Images (映像) 索引標籤\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/container-service-images-tab.png)

1. 選擇**新增儲存庫**以授予容器服務對於 Amazon ECR 私有儲存庫的存取權。
**注意**  
您可以選擇**移除**以移除容器服務對於先前新增的 Amazon ECR 私有儲存庫的存取權。  
![\[「映像」索引標籤的 Amazon ECR 私有儲存庫區段\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/container-service-ecr-repos-section.png)

1. 在顯示的下拉式選單中，選擇要存取的私有儲存器，然後選擇 **Add** (新增)。  
![\[Amazon ECR 私有儲存庫下拉式選單選擇\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/container-service-ecr-repos-selection.png)

   Lightsail 為您的容器服務啟用 Amazon ECR 映像提取器 IAM 角色需要一些時間，其中包括主體 Amazon Resource Name (ARN)。Lightsail然後， 會自動將 IAM 角色主體 ARN 新增至您選取的 Amazon ECR 私有儲存庫的許可政策。這將授予容器服務對私有儲存庫及其映像的存取權。強制回應視窗出現並表明程序已完成且您可以選擇 **Continue** (繼續) 之前，請勿關閉瀏覽器視窗。  
![\[確認正在將許可新增至 Amazon ECR 私有儲存庫的強制回應視窗\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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) 管理Lightsail容器服務對 Amazon ECR 私有儲存庫的存取需要以下步驟：

**重要**  
建議使用 Lightsail 主控台管理 Lightsail 容器服務對於 Amazon ECR 私有儲存庫的存取權，因其可簡化流程。如需詳細資訊，請參閱本指南前面所述的[使用 Lightsail 主控台管理對於私有儲存庫的存取權](#ecr-private-repo-access-lightsail-console)。

1. **啟用或停用 Amazon ECR 映像提取器 IAM 角色** — 使用 AWS CLI `update-container-service` 的 命令Lightsail啟用或停用 Amazon ECR 映像提取器 IAM 角色。啟用 Amazon ECR 映像 puller IAM 角色之後，會為其建立一個主體 Amazon Resource Name (ARN)。如需詳細資訊，請參閱本指南的[啟用或停用 Amazon ECR 映像 puller IAM 角色](#activate-ecr-puller-role)章節。

1. **判定 Amazon ECR 私有儲存庫是否具有政策陳述式** – 在啟用 Amazon ECR 映像 puller IAM 角色後，需要判定您想要容器服務存取的 Amazon ECR 私有儲存庫是否具有現有政策陳述式。如需詳細資訊，請參閱本指南後面所述的[判定 Amazon ECR 私有儲存庫是否具有政策陳述式](#identify-ecr-repo-policy-statement)章節。

   您可以使用以下方法之一將 IAM 角色主體 ARN 新增到儲存庫，具體方法取決於您的儲存庫是否具有現有政策陳述式：

   1. **將政策新增至沒有政策陳述式的私有儲存庫** — 使用 AWS CLI `set-repository-policy`命令讓 Amazon ECR 將容器服務的 Amazon ECR 映像提取器角色主體 ARN 新增至具有現有政策的私有儲存庫。如需詳細資訊，請參閱本指南後述的[將政策新增至沒有政策陳述式的私有儲存庫](#ecr-private-repo-add-policy-no-policy)章節。

   1. **將政策新增至具有政策陳述式的私有儲存庫** — 使用 AWS CLI Amazon ECR 的 `set-repository-policy`命令，將容器服務的 Amazon ECR 映像提取器角色新增至沒有現有政策的私有儲存庫。如需詳細資訊，請參閱本指南後述的[將政策新增至具有政策陳述式的私有儲存庫](#ecr-private-repo-add-policy-existing-policy)章節。

### 啟用或停用 Amazon ECR 映像 puller IAM 角色
<a name="activate-ecr-puller-role"></a>

完成下列程序，以啟用或停用 Lightsail 容器服務的 Amazon ECR 映像 puller 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)。

**注意**  
您必須安裝 AWS CLI 並將其設定為 ，Lightsail才能繼續此程序。如需詳細資訊，請參閱[設定 AWS CLI 以搭配使用 Lightsail](lightsail-how-to-set-up-and-configure-aws-cli.md)。

1. 開啟命令提示或終端機視窗。

1. 輸入以下命令，以更新容器服務並啟用或停用 Amazon ECR 映像 puller IAM 角色。

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

   將命令中的以下範例文字取代為自訂文字：
   + *ContainerServiceName* – 要為其啟用或停用 Amazon ECR 映像 puller IAM 角色的容器服務名稱。
   + *RoleActivationState* – Amazon ECR 映像 puller IAM 角色的啟用狀態。指定 `true` 即可啟用角色，指定 `false` 則可停用角色。
   + *AwsRegionCode* – 容器服務的 AWS 區域 代碼 (例如 `us-east-1`)。

   範例：
   + 啟用 Amazon ECR 映像 puller IAM 角色：

     ```
     aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
     ```
   + 停用 Amazon ECR 映像 puller IAM 角色：

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

1. 如果您：
   + **已啟用 Amazon ECR 映像 puller 角色** – 在獲得上一個回應後需要至少等待 30 秒。然後，繼續下一個步驟，取得容器服務的 Amazon ECR 映像 puller IAM 角色主體 ARN。
   + **已停用 Amazon ECR 映像 puller 角色** – 如果之前已將 Amazon ECR 映像 puller IAM 角色主體 ARN 新增至 Amazon ECR 私有儲存庫的許可政策，則應從儲存庫中移除該許可政策。如需詳細資訊，請參閱《Amazon ECR 使用者指南》**中的[刪除私有儲存庫政策陳述式](https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete-repository-policy.html)。

1. 輸入下列命令，以取得容器服務的 Amazon ECR 映像 puller IAM 角色主體 ARN。

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

   將命令中的以下範例文字取代為自訂文字：
   + *ContainerServiceName* – 要為其取得 Amazon ECR 映像 puller IAM 角色主體 ARN 的容器服務名稱。
   + *AwsRegionCode* – 容器服務的 AWS 區域 代碼 (例如 `us-east-1`)。

   範例：

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

   尋找回應中的 ECR 映像 puller IAM 角色主體 ARN。如果列出了某個角色，請複製該角色或將其寫下。本指南的下一節會用到該角色。接下來，需要判定您想要容器服務存取的 Amazon ECR 私有儲存庫上是否具有現有政策陳述式。繼續按本指南中的[判定 Amazon ECR 私有儲存庫是否具有政策陳述式](#identify-ecr-repo-policy-statement)章節進行操作。

### 判定 Amazon ECR 私有儲存庫是否具有政策陳述式
<a name="identify-ecr-repo-policy-statement"></a>

使用以下程序來判定 Amazon ECR 私有儲存庫是否具有政策陳述式。您可以針對 AWS CLI `get-repository-policy`Amazon ECR 使用 命令。如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [update-container-service](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-repository-policy.html)。

**注意**  
您必須安裝 AWS CLI 並為 Amazon ECR 設定它，才能繼續此程序。如需詳細資訊，請參閱《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/zh_tw/lightsail/latest/userguide/images/ecr-no-policy-statement.png)
   + **找到儲存庫政策** - 您的私有儲存庫有一個政策陳述式，顯示在您的請求的回應中。如果您的儲存庫具有政策陳述式，請複製現有政策，然後遵循本指南後述的[將政策新增至具有政策陳述式的私有儲存庫](#ecr-private-repo-add-policy-existing-policy)章節中所述的步驟。  
![\[對具有政策陳述式之私有儲存庫的 get-repository-policy 命令的回應\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/ecr-existing-policy-statement.png)

### 將政策新增至沒有政策陳述式的私有儲存庫
<a name="ecr-private-repo-add-policy-no-policy"></a>

完成下列程序，以將政策新增至沒有政策陳述式的 Amazon ECR 私有儲存庫。新增的政策必須包含 Lightsail 容器服務的 Amazon ECR 映像 puller IAM 角色主體 ARN。這會授予您的容器服務存取權，從私有儲存庫部署映像。

**重要**  
當您使用 Lightsail 主控台設定存取權時，Lightsail 會自動將 Amazon ECR 映像 puller 角色新增至 Amazon ECR 私有儲存庫。在這種情況下，不必依本節中的步驟將 Amazon ECR 映像 puller 角色手動新增至私有儲存庫。如需詳細資訊，請參閱本指南前面所述的[使用 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)。

**注意**  
您必須安裝 AWS CLI 並為 Amazon ECR 設定它，才能繼續此程序。如需詳細資訊，請參閱《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 映像 puller 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
     ```

   您的容器服務現在可以存取私有儲存庫及其映像。若要使用儲存庫中的映像，請將以下 URI 指定為容器服務部署的 **Image** (映像) 值。在 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 映像 puller IAM 角色主體 ARN。這會維護私有儲存庫上的現有許可，同時也會授予容器服務存取權，以從私有儲存庫部署映像。

**重要**  
當您使用 Lightsail 主控台設定存取權時，Lightsail 會自動將 Amazon ECR 映像 puller 角色新增至 Amazon ECR 私有儲存庫。在這種情況下，不必依本節中的步驟將 Amazon ECR 映像 puller 角色手動新增至私有儲存庫。如需詳細資訊，請參閱本指南前面所述的[使用 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)。

**注意**  
您必須安裝 AWS CLI 並為 Amazon ECR 設定它，才能繼續此程序。如需詳細資訊，請參閱《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/zh_tw/lightsail/latest/userguide/images/ecr-existing-policy-copy-statement.png)

1. 開啟文字編輯器，並貼上您在先前步驟中複製的私有儲存庫現有政策。

   結果應如下列範例所示。  
![\[政策陳述式 JSON 檔案範例\]](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/ecr-existing-policy-statement-json.png)

1. 在貼上的文字中，將 `\n` 取代為分行符號，然後刪除剩餘的 `\`。

   結果應如下列範例所示。  
![\[已編輯的政策陳述式 JSON 檔案範例\]](http://docs.aws.amazon.com/zh_tw/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 映像 puller IAM 角色主體 ARN。

   結果應如下列範例所示。  
![\[完成的政策陳述式 JSON 檔案範例\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/lightsail/latest/userguide/images/ecr-set-policy-statement-response.png)

   如果再次執行 `get-repository-policy` 命令，您應該會在私有儲存庫上看到新的附加政策陳述式。您的容器服務現在可以存取私有儲存庫及其映像。若要使用儲存庫中的映像，請將以下 URI 指定為容器服務部署的 **Image** (映像) 值。在 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
   ```