

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 构建、标记和推送容器镜像
<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`可以跨会话解析为不同的图像内容。