IoT Greengrass Docker部署:如果我更改部署以运行不同的Docker组件或其不同版本,旧的Docker容器仍然在本地运行,应如何修改?

0

【以下的问题经过翻译处理】 我正在使用AWS IoT Greengrass将存储在私有ECR仓库中的docker镜像部署到我的Raspberry Pi。部署工作正常。但是,如果我更改部署(即修改它)以运行不同的镜像而不是旧镜像,则旧容器仍会在本地运行。显然,如果我不再将旧容器包含在我的部署中,我希望旧的docker容器停止运行。这仅在关闭RPI并重新启动它时发生。如何确保旧容器立即停止。

我的组件配方如下,我需要更改其中的任何内容吗? 为了完整起见:Docker容器运行一个Python脚本,该脚本进入一个无限循环,每秒打印“Hello,world!”。也许连续循环是问题,但我认为不是,因为我能够通过docker stop停止容器。

{
    "RecipeFormatVersion": "2020-01-25",
    "ComponentName": "com.example.MyPrivateDockerComponent_revised",
    "ComponentVersion": "1.0.4",
    "ComponentType": "aws.greengrass.generic",
    "ComponentDescription": "从私有Amazon ECR镜像运行Docker容器的组件(经过修订)。",
    "ComponentPublisher": "Amazon",
    "ComponentDependencies": {
        "aws.greengrass.DockerApplicationManager": {
            "VersionRequirement": ">=2.0.0 <2.1.0",
            "DependencyType": "HARD"
        },
        "aws.greengrass.TokenExchangeService": {
            "VersionRequirement": ">=2.0.0 <2.1.0",
            "DependencyType": "HARD"
        }
    },
    "Manifests": [
        {
            "Platform": {
                "os": "all"
            },
			"Lifecycle": {
				"Run": "docker run --sig-proxy=True 242944196659.dkr.ecr.eu-central-1.amazonaws.com/test_repo:latest",
				"Stop": "docker stop $(docker ps -q --filter ancestor=242944196659.dkr.ecr.eu-central-1.amazonaws.com/test_repo:latest)",
				"Destroy": "docker rm $(docker ps -a -q --filter ancestor=242944196659.dkr.ecr.eu-central-1.amazonaws.com/test_repo:latest)"
			},
			"Artifacts": [
				{
					"Uri": "docker:242944196659.dkr.ecr.eu-central-1.amazonaws.com/test_repo:latest",
					"Unarchive": "NONE",
					"Permission": {
						"Read": "OWNER",
						"Execute": "NONE"
					}
				}
			]
		}
	],
	"Lifecycle": {}
}
profile picture
专家
已提问 1 年前73 查看次数
1 回答
0

【以下的回答经过翻译处理】 问题在于你正在使用stopdestroy这两个关键字,我不确定你是从哪里获得的。请参考此处的配方参考文档:https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html#recipe-format,你应该使用shutdown作为停止组件的关键字。

profile picture
专家
已回答 1 年前

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

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

回答问题的准则