

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

# 建置、標記和推送容器映像
<a name="containers-build-push"></a>

為機群使用的處理器架構建置映像。具有Docker軟體附加元件的 Linux 服務受管機群會使用 `linux/amd64`平台。為每個映像版本提供一個識別其內容的標籤，例如應用程式版本或來源修訂。

## 先決條件
<a name="containers-build-prerequisites"></a>

在您的工作站 AWS CLI 上安裝 Docker和 。建立 Amazon ECR 私有儲存庫，並使用將映像推送至該儲存庫的許可來設定您的 AWS 登入資料。

## 建置並推送映像
<a name="containers-build-procedure"></a>

**建置和推送容器映像**

1. 為 AWS 您的帳戶、區域、儲存庫和映像標籤設定值。

   ```
   REGION={{us-west-2}}
   ACCOUNT_ID={{123456789012}}
   REPOSITORY={{portable-job}}
   IMAGE_TAG={{1.0.0}}
   REGISTRY="${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com"
   IMAGE_URI="${REGISTRY}/${REPOSITORY}:${IMAGE_TAG}"
   ```

1. 從包含 Dockerfile 的目錄中，建置映像。

   ```
   docker build --platform linux/amd64 \
       --tag "${REPOSITORY}:${IMAGE_TAG}" \
       .
   ```

1. 執行應用程式特定的命令，以在本機測試映像。

   ```
   docker run --rm "${REPOSITORY}:${IMAGE_TAG}" {{test-command}}
   ```

1. 驗證Docker您的私有 Amazon ECR 登錄檔。

   ```
   aws ecr get-login-password --region "${REGION}" | \
       docker login --username AWS --password-stdin "${REGISTRY}"
   ```

1. 套用 Amazon ECR 映像標籤並推送映像。

   ```
   docker tag "${REPOSITORY}:${IMAGE_TAG}" "${IMAGE_URI}"
   docker push "${IMAGE_URI}"
   ```

1. 擷取映像摘要，並使用建置輸出記錄。

   ```
   aws ecr describe-images \
       --region "${REGION}" \
       --repository-name "${REPOSITORY}" \
       --image-ids imageTag="${IMAGE_TAG}" \
       --query 'imageDetails[0].imageDigest' \
       --output text
   ```

針對可重複的任務使用固定版本標籤或映像摘要。等可變標籤`latest`可以解析為跨工作階段的不同映像內容。