IoT Greengrass Docker deployment: If I change deployment to run a different docker component or different version thereof, the old docker container keeps running locally.



I am using AWS IoT Greengrass to deploy a docker image that I saved in a private ECR repo to my Raspberry Pi. The deployment works fine. However, if I change the deployment (i.e. revise it) to run a different image and not the old one anymore, the old container still keeps running locally. I obviously want the old docker container to stop if I haven't included it in my deployment anymore. This only happens if I shut down the RPI and restart it. How can Imake sure the old container stops immediately.

My component recipe looks as follows, do I need to change anything therein? For completeness: The Docker container runs a Python script that enters an infinite while loop which prints "Hello, world!" every second. Maybe the continuous loop is the problem but I don't think so as I am able to stop the container through docker stop.

	"RecipeFormatVersion": "2020-01-25",
	"ComponentName": "com.example.MyPrivateDockerComponent_revised",
	"ComponentVersion": "1.0.4",
	"ComponentType": "aws.greengrass.generic",
	"ComponentDescription": "A component that runs a Docker container from a private Amazon ECR image revised.",
	"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",
				"Stop": "docker stop $(docker ps -q --filter",
				"Destroy": "docker rm $(docker ps -a -q --filter"
			"Artifacts": [
					"Uri": "",
					"Unarchive": "NONE",
					"Permission": {
						"Read": "OWNER",
						"Execute": "NONE"
	"Lifecycle": {}
1 Answer
Accepted Answer


The problem is that you're using stop and destroy which I'm not sure where you got those from. Refer to the recipe reference here:, you should use shutdown as the key to stop the component.



answered 17 days ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions