

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

# 將 Docker 映像推送至 Amazon ECR 私有儲存庫
<a name="docker-push-ecr-image"></a>

您可以使用 **docker push** 命令將容器映像推送到 Amazon ECR 儲存庫。

Amazon ECR 也支援建立和推送用於多架構映像的 Docker 資訊清單清單。如需相關資訊，請參閱[將多架構映像推送至 Amazon ECR 私有儲存庫](docker-push-multi-architecture-image.md)。

**將 Docker 映像推送至 Amazon ECR 儲存庫**

在推送映像之前，Amazon ECR 儲存庫必須存在，否則您必須定義儲存庫建立範本。如需詳細資訊，請參閱[建立 Amazon ECR 私有儲存庫以存放映像](repository-create.md)及[用於控制提取快取、推送時建立或複寫動作期間建立的儲存庫的範本](repository-creation-templates.md)。

1. 向打算推送映像的 Amazon ECR 登錄檔驗證您的 Docker 用戶端。所用的每個登錄檔皆必須取得身分驗證字符，字符有效期間為 12 個小時。如需詳細資訊，請參閱[Amazon ECR 中的私有登錄檔身分驗證](registry_auth.md)。

   若要向 Amazon ECR 登錄檔驗證 Docker，請執行 **aws ecr get-login-password** 命令。將身分驗證字符傳遞給 **docker login** 命令時，使用 `AWS` 的值作為使用者名稱並指定您要驗證的 Amazon ECR 登錄檔 URI。如果是向多個登錄進行驗證，您必須針對每個登錄重複此命令。
**重要**  
若您收到錯誤，請安裝或升級至最新版本的 AWS CLI。如需詳細資訊，請參閱「AWS Command Line Interface 使用者指南」**中的[安裝 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。

   ```
   aws ecr get-login-password --region {{<region>}} | docker login --username AWS --password-stdin {{<{{aws_account_id}}>}}.dkr.ecr.{{<region>}}.amazonaws.com
   ```

1. 如果您的映像儲存庫不存在於您打算推送的登錄檔中，且您已定義儲存庫建立範本，您可以使用儲存庫建立範本的字首和所需的儲存庫名稱來推送映像。ECR 會使用儲存庫建立範本的預先定義設定，自動為您建立儲存庫。

   如果您沒有定義相符的儲存庫建立範本，則需要建立儲存庫。如需詳細資訊，請參閱 [用於控制提取快取、推送時建立或複寫動作期間建立的儲存庫的範本](repository-creation-templates.md) 或 [建立 Amazon ECR 私有儲存庫以存放映像](repository-create.md) 。

1. 找出要推送的本機映像。執行 **docker images** 命令，列出系統上的容器映像。

   ```
   docker images
   ```

   可用 {{repository:tag}} 值或映像 ID 從產生的命令輸出中找出映像。

1. <a name="image-tag-step"></a>在映像上標記要使用的 Amazon ECR 登錄檔、儲存庫和可選用的映像標籤名稱組合。登錄檔格式為  `{{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com`。儲存庫名稱應與您為映像建立的儲存庫名稱相符。如果省略映像標籤，系統將假設標籤為 `latest`。

   下列範例會將 ID 為 {{ e9ae3c220b23}} 的本機映像標記為 `{{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/my-repository:tag`。

   ```
   docker tag {{e9ae3c220b23}} {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository:tag}}
   ```

1. <a name="image-push-step"></a>使用 **docker push** 命令推送映像：

   ```
   docker push {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository:tag}}
   ```

1. (選用) 重覆執行 [Step 4](#image-tag-step) 和 [Step 5](#image-push-step)，套用任何其他標籤至映像，並將標籤推送至 Amazon ECR。