本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将应用程序容器发布到 Amazon ECR
AWS RoboMaker在模拟作业中使用的容器必须存储在完全托管的容器注册表 Amazon Elastic Container Registry (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
。
有关更多信息,请参阅版本控制应用程序。