使用容器重新启动Greengrass组件会创建该容器的两个实例。

0

【以下的问题经过翻译处理】 我想重新启动一个包含Docker容器的Greengrass组件,而不创建容器的第二个实例。当我通过greengrass-cli运行组件重启命令,然后运行“docker container ls”时,它显示两个正在运行的活动容器。

是否可能重新启动容器组件以使原始实例被终止?

下面是容器配方生命周期命令:

{ "Run": "docker run --rm --net=host --runtime nvidia <ECR IMAGE> python3 <python script on container>" }

profile picture
专家
已提问 6 个月前0 查看次数
1 回答
0

【以下的回答经过翻译处理】 您可以重新启动组件并使其重新启动容器。实质上,当停止时,Greengrass会向运行在生命周期“运行”部分中的进程发送SIGTERM。在这种情况下,“docker run”命令会接收到该信号。如果容器可以处理信号并优雅地退出,则可以使用此方法。此处提供了有关过程的更多详细信息。

如果容器无法处理SIGTERM,则另一种管理方式是使用配方文件中的“启动”和“关闭”生命周期。在这种情况下,您可以将“docker run”更改为命名容器并在分离(后台)模式下运行。然后,当Greengrass停止组件时,“Shutdown”生命周期将具有“docker stop my_container_name”,这将完成关闭。

无论使用哪种方法,都可以确保只有一个容器实例在运行。请注意,可能会出现一些边缘情况,因此根据情况,您可能希望向配方文件添加附加逻辑来检查错误进程或运行中的容器,就像您如果直接在Shell脚本中执行此操作一样。

希望这有所帮助!

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则