创建自定义映像并将其推送到 Amazon ECR - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建自定义映像并将其推送到 Amazon ECR

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

注意

在以下示例中,未指定标签,系统将默认使用标签 latest。如果要指定标签,需在映像名称末尾追加 :tag。有关更多信息,请参阅 Docker 文档中的 Docker 映像标签

创建本地 Dockerfile 并构建容器映像

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

创建 Dockerfile
  1. 首先为接下来的Amazon CLI命令设置变量。

    LOCAL_IMAGE_NAME=local-image-name

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

  2. 创建符合自定义映像规范中规范的名为 Dockerfile 的基于文本的文档。

    可以在 Dockerfile 示例中找到受支持的应用程序的 Dockerfile 示例。

    注意

    如果您要将自己的镜像带到 SageMaker Unified Studio,则需要遵循亚马逊 Unifie SageMaker d Studio 用户指南中的 Dockerfile 规范

    Dockerfile SageMaker Unified Studio 的示例可以在亚马逊 Unified Studio 用户指南的 Docker SageMaker f ile 示例中找到。

  3. 在包含 Dockerfile 的目录下,使用以下命令构建 Docker 映像。句点(.)指定 Dockerfile 应该在构建命令的上下文中。

    docker build -t ${LOCAL_IMAGE_NAME} .

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

    docker images
  4. (可选)可使用以下命令测试映像。

    docker run -it ${LOCAL_IMAGE_NAME}

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

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

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

件 Docker 映像添加到 Amazon ECR

要将容器映像添加到 Amazon ECR,您需要执行以下操作。

  • 创建 Amazon ECR 存储库。

  • 登录到默认注册表。

  • 将映像推送到 Amazon ECR 存储库。

注意

Amazon ECR 存储库必须与您要将图像附加到的域名Amazon Web Services 区域相同。

构建容器映像并将其推送到 Amazon ECR
  1. 首先为接下来的Amazon CLI命令设置变量。

    ACCOUNT_ID=account-id REGION=aws-region ECR_REPO_NAME=ecr-repository-name
    • account-id 是您的账户 ID。你可以在任何Amazon主机页面的右上角找到它。例如,SageMaker AI 控制台

    • aws-region是你Amazon Web Services 区域的 Amazon A SageMaker I 域名。你可以在任何Amazon主机页面的右上角找到它。

    • ecr-repository-name 是您在此处定义的 Amazon Elastic Container Registry 存储库的名称。要查看您的 Amazon ECR 存储库,请参阅 Amazon ECR 控制台

  2. 登录 Amazon ECR,然后登录 Docker。

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

    在身份验证成功后,您将收到一条登录成功消息。

    重要

    如果收到错误,您可能需要安装或升级到最新版本的 Amazon CLI。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的安装 Amazon Command Line Interface

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

    docker tag \ ${LOCAL_IMAGE_NAME} \ ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}
  4. 使用 Amazon CLI 创建一个 Amazon ECR 存储库。要使用 Amazon ECR 控制台创建存储库,请参阅创建 Amazon ECR 私有存储库以存储映像

    aws ecr create-repository \ --region ${REGION} \ --repository-name ${ECR_REPO_NAME}
  5. 将映像推送到 Amazon ECR 存储库。也可以为 Docker 映像添加标签。

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

在成功将映像添加到 Amazon ECR 存储库后,可以在 Amazon ECR 控制台中查看该映像。