Install
openclaw skills install docker-container-rerunSafely check whether a Docker container's image has changed and, only when needed, recreate that docker run container with a user-provided original docker run command. Use when updating an existing Docker container managed by docker run, especially when the user provides a fixed recreate_command and wants image Id (sha256) comparison before pull/recreate. Do not use for docker compose, automatic command reconstruction, volume pruning, or speculative container changes.
openclaw skills install docker-container-rerunUpdate a docker run container with a conservative workflow.
Require both of these from the user:
container_namerecreate_commandTreat recreate_command as the source of truth. Do not try to reconstruct missing flags from docker inspect.
Support only containers originally managed by docker run.
Do not use this skill for:
docker composedocker system pruneAlways compare image Id values, not repo digests.
Use this exact logic:
docker inspect -f '{{.Image}}' <container_name>
recreate_command.docker pull <image>
docker image inspect <image> --format '{{.Id}}'
Before any destructive action, restate the exact recreate command that will be used.
If recreate_command is missing, ambiguous, or not clearly a docker run command, stop and ask the user to provide a valid full command.
If the image cannot be extracted from recreate_command, stop and ask the user to provide the image explicitly inside the command.
Never silently modify the recreate command.
Prefer this sequence when update is needed:
docker stop <container_name>
docker rm <container_name>
<recreate_command>
Before using it, verify all of the following:
docker runIf the command includes an inline container command after the image, preserve it exactly.
If the command is multiline, preserve it exactly.
docker stop <container_name>docker rm <container_name>recreate_commanddocker ps --filter name=<container_name>
docker inspect <container_name>
docker logs --tail 100 <container_name>
healthy, starting, or absent.Use the bundled script when you want a deterministic check/apply flow:
python3 scripts/update_docker_run_container.py \
--container-name <container_name> \
--recreate-command '<full docker run command>'
Add --apply only when the user has approved the exact recreate command and actual recreation should happen.
The script will:
recreate_commandWhen reporting results, include:
Input:
container_name: my-containerrecreate_command:
docker run -d --network host --name my-container --restart unless-stopped -v example_data:/data -v example_certs:/etc/ssl/certs -e DB_HOST=<db_host> -e DB_PORT=<db_port> -e DB_NAME=<db_name> -e DB_USER=<db_user> -e DB_PASSWORD=<db_password> --health-cmd="/bin/check-health" --health-interval=600s --health-retries=5 --health-timeout=3s example/image:latest
Expected behavior:
example/image:latestWhen users ask to "update container X", prefer asking for the original docker run command unless it is already documented in memory or provided in the current request.
If the user has a known fixed recreate command for a specific container, prefer using that exact command unchanged.