

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

# 创建自定义映像并将其推送到 Amazon ECR
<a name="studio-updated-byoi-how-to-prepare-image"></a>

此页面提供了有关如何创建本地 Dockerfile、构建容器映像以及将其添加到 Amazon Elastic Container Registry（Amazon ECR）的说明。

**注意**  
在以下示例中，未指定标签，系统将默认使用标签 `latest`。如果要指定标签，需在映像名称末尾追加 `:tag`。有关更多信息，请参阅 *Docker 文档*中的 [Docker 映像标签](https://docs.docker.com/reference/cli/docker/image/tag/)。

**Topics**
+ [创建本地 Dockerfile 并构建容器映像](#studio-updated-byoi-how-to-create-local-dockerfile)
+ [件 Docker 映像添加到 Amazon ECR](#studio-updated-byoi-add-container-image)

## 创建本地 Dockerfile 并构建容器映像
<a name="studio-updated-byoi-how-to-create-local-dockerfile"></a>

按照以下说明操作，创建带所需软件和依赖项的 Dockerfile。

**创建 Dockerfile**

1. 首先为接下来的 AWS CLI 命令设置变量。

   ```
   LOCAL_IMAGE_NAME=local-image-name
   ```

   `local-image-name` 是您在此处定义的本地设备上的容器映像的名称。

1. 创建符合[自定义映像规范](studio-updated-byoi-specs.md)中规范的名为 `Dockerfile` 的基于文本的文档。

   可以在 [Dockerfile 示例](studio-updated-byoi-specs.md#studio-updated-byoi-specs-dockerfile-templates)中找到受支持的应用程序的 `Dockerfile` 示例。
**注意**  
如果您要将自己的镜像带到 SageMaker Unified Studio，则需要遵循*亚马逊 Unifie SageMaker d Studio 用户*[指南中的 Dockerfile 规范](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html)。  
`Dockerfile` SageMaker Unified Studio 的示例可以在*亚马逊 Unified Studio 用户指南的 Docker SageMaker f* [ile 示例](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html#byoi-specifications-example)中找到。

1. 在包含 `Dockerfile` 的目录下，使用以下命令构建 Docker 映像。句点（`.`）指定 `Dockerfile` 应该在构建命令的上下文中。

   ```
   docker build -t ${LOCAL_IMAGE_NAME} .
   ```

   构建完成后，您可以使用以下命令列出您的容器映像信息。

   ```
   docker images
   ```

1. （可选）可使用以下命令测试映像。

   ```
   docker run -it ${LOCAL_IMAGE_NAME}
   ```

   在输出中，您会发现服务器正在一个 URL（如 `http://127.0.0.1:8888/...`）上运行。可通过将该 URL 复制到浏览器来测试映像。

   如果这样做不起作用，您可能需要在 docker run 命令中添加 `-p port:port`。此选项会将容器上的公开端口映射到主机系统上的端口。有关 docker run 的更多信息，请参阅 *Docker 文档*中的[正在运行的容器](https://docs.docker.com/engine/containers/run/)。

   在确认服务器正在运行后，可以停止服务器并关闭所有内核，然后再继续操作。可在输出中查看说明。

## 件 Docker 映像添加到 Amazon ECR
<a name="studio-updated-byoi-add-container-image"></a>

要将容器映像添加到 Amazon ECR，您需要执行以下操作。
+ 创建 Amazon ECR 存储库。
+ 登录到默认注册表。
+ 将映像推送到 Amazon ECR 存储库。

**注意**  
Amazon ECR 存储库必须与您要将图像附加到的域名 AWS 区域 相同。

**构建容器映像并将其推送到 Amazon ECR**

1. 首先为接下来的 AWS CLI 命令设置变量。

   ```
   ACCOUNT_ID=account-id
   REGION=aws-region
   ECR_REPO_NAME=ecr-repository-name
   ```
   + `account-id` 是您的账户 ID。你可以在任何 AWS 主机页面的右上角找到它。例如，[SageMaker AI 控制台](https://console.aws.amazon.com/sagemaker)。
   + `aws-region`是 AWS 区域 您的亚马逊 A SageMaker I 域名。你可以在任何 AWS 主机页面的右上角找到它。
   + `ecr-repository-name` 是您在此处定义的 Amazon Elastic Container Registry 存储库的名称。要查看您的 Amazon ECR 存储库，请参阅 [Amazon ECR 控制台](https://console.aws.amazon.com/ecr)。

1. 登录 Amazon ECR，然后登录 Docker。

   ```
   aws ecr get-login-password \
       --region ${REGION} | \
       docker login \
       --username AWS \
       --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com
   ```

   在身份验证成功后，您将收到一条登录成功消息。
**重要**  
如果收到错误，您可能需要安装或升级到最新版本的 AWS CLI。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[安装 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 使用与 Amazon ECR 兼容的格式标记映像以将其推送到存储库。

   ```
   docker tag \
       ${LOCAL_IMAGE_NAME} \
       ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}
   ```

1. 使用 AWS CLI创建一个 Amazon ECR 存储库。要使用 Amazon ECR 控制台创建存储库，请参阅[创建 Amazon ECR 私有存储库以存储映像](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)。

   ```
   aws ecr create-repository \
       --region ${REGION} \
       --repository-name ${ECR_REPO_NAME}
   ```

1. 将映像推送到 Amazon ECR 存储库。也可以为 Docker 映像添加标签。

   ```
   docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}
   ```

在成功将映像添加到 Amazon ECR 存储库后，可以在 [Amazon ECR 控制台](https://console.aws.amazon.com/ecr)中查看该映像。