将应用程序容器发布到 Amazon ECR - AWS RoboMaker

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

将应用程序容器发布到 Amazon ECR

AWS RoboMaker在模拟作业中使用的容器必须存储在完全托管的容器注册表 Amazon Elastic Container Registry (ECR) 中。成功构建应用程序容器后,必须将其推送到 Amazon ECR。本节向您演示了应如何进行操作。

首先,您可以通过设置一些环境变量减少重复键入,这些变量将在随后的命令中重复使用。

export robotapp=robomaker-helloworld-robot-app export simapp=robomaker-helloworld-sim-app export account=<YOUR AWS ACCOUNT NUMBER> export region=<YOUR AWS REGION> export ecruri=$account.dkr.ecr.$region.amazonaws.com

接下来,登录并创建两个新存储库。

aws ecr get-login-password --region $region | docker login --username AWS --password-stdin $ecruri aws ecr create-repository --repository-name $robotapp aws ecr create-repository --repository-name $simapp

您可以使用 Amazon ECR 存储库的 URI 标记您的 Docker 映像。

docker tag $robotapp $ecruri/$robotapp:latest docker tag $simapp $ecruri/$simapp:latest

接下来,将 Docker 映像推送到 Amazon ECR。

docker push $ecruri/$robotapp docker push $ecruri/$simapp

最后,您可以通过运行以下命令确认已上传到 Amazon ECR 的映像。

aws ecr list-images --repository-name $simapp aws ecr list-images --repository-name $robotapp

下列代码片段显示预期输出:

Administrator:~/environment/helloworld (ros1) $ aws ecr list-images --repository-name $simapp { "imageIds": [ { "imageDigest": "sha256:28cad40230402343024kf303f30fk20f2f2fa0a8148", "imageTag": "latest" } ] } Administrator:~/environment/helloworld (ros1) $ aws ecr list-images --repository-name $robotapp { "imageIds": [ { "imageDigest": "sha256:28cad40230402343024kf303f30fk20f2f2fa0a8148", "imageTag": "latest" } ] }

您的机器人和模拟 Docker 映像现在托管在 Amazon ECR 中。继续提交模拟作业之前,须将这些映像与机器人应用程序或模拟应用程序相关联。

应用程序版本控制

AWS RoboMaker 支持创建机器人应用程序和模拟应用程序的多个版本。这可以帮助您控制机器人和模拟使用哪个代码。版本是您应用程序的 $LATEST 的版本的带编号快照。您可以创建版本,以便在开发工作流程中的不同环节使用。例如,开发、测试部署或生产。

在对 AWS RoboMaker 机器人应用程序或模拟应用程序进行版本控制时,您将创建应用程序的快照。Amazon ECR 使用映像摘要显示您的应用程序版本。AWS RoboMaker记住各版本的映像摘要。

如果您已将映像上传到 Amazon ECR,但尚未更改映像摘要,则可以访问和使用该版本的应用程序。对于每个应用程序,您最多可创建 40 个版本。

创建映像时,也可以对其应用标签。您可以为此$LATEST版本指定标签字段的值为latest。这些值各不相同。

映像获取 latest 标签的方式有两种:

  • 您指定了一个值为 latest 的标签。

  • 若您推送的映像没有标签,Amazon ECR 会使用 latest 标签更新映像。

当您在AWS RoboMaker中为某一映像指定标签时,始终会选择该映像作为$LATEST版本。例如,如果您使用图像名称myImage、标签xyz和映像摘要123创建机器人应用程序,则$LATEST版本将为myImage:xyz,摘要为123

以下是您应该添加标签的场景:

  • 您更新$LATEST版本以使用新标签。例如,如果您已有映像myImage,则可以使用标签更新映像abc。映像的$LATEST版本指向myImage:abc

  • 更新图像并重新添加标签。例如,您可以对带有标签的映像进行更改abc。更新标签xyz后即可使用。该$LATEST版本指向myImage:xyz

有关更多信息,请参阅版本控制应用程序