Install
openclaw skills install docker-ops-toolkitDocker container lifecycle management, health checks, log analysis, cleanup, compose orchestration, and troubleshooting. Use when Codex needs to manage Docker containers, debug running services, inspect logs, clean up resources, or orchestrate multi-service setups with Docker Compose.
openclaw skills install docker-ops-toolkitDocker container lifecycle management, health checks, log analysis, cleanup, compose orchestration, and troubleshooting. Use when Codex needs to manage Docker containers, debug running services, or clean up Docker resources.
docker compose plugin (for compose)docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}\t{{.Image}}'
docker stats --no-stream # live resource usage
docker inspect <container> | jq '.[0].State' # status, exit code, health
docker inspect <container> --format '{{json .Mounts}}' | jq .
docker logs <container> --tail 100 --since 5m
# Use docker-log-inspector.py for filtering:
python3 scripts/docker-log-inspector.py <container> --since 30m --filter ERROR --summary
# Standard cleanup
bash scripts/docker-cleanup.sh
# Aggressive cleanup (removes volumes + build cache)
bash scripts/docker-cleanup.sh --aggressive
# Preview only
bash scripts/docker-cleanup.sh --dry-run
bash scripts/docker-health.sh # all containers
bash scripts/docker-health.sh <container-name> # single container
docker compose up -d # start services
docker compose down -v # stop + remove volumes
docker compose logs -f --tail 50 # follow logs
docker compose ps # status
docker compose exec <service> sh # shell into a service
docker compose build --no-cache <svc> # rebuild without cache
docker compose restart <service> # restart one service
# Find what's using a port
sudo lsof -i :<port>
docker ps --format '{{.Names}} {{.Ports}}' | grep <port>
# Fix: change port mapping in docker-compose.yml or stop conflicting container
docker inspect <container> --format '{{json .HostConfig.Memory}}'
docker stats <container> --no-stream
# Fix: add to docker-compose.yml
# deploy:
# resources:
# limits:
# memory: 512M
# cpus: '0.5'
docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedSince}}'
docker image prune -a # remove all unused images
docker rmi <image-id> # remove specific image
docker pull <image>:<tag> # update image
docker build -t <name>:<tag> . # build
docker build --no-cache -t <name> . # force rebuild
docker network ls
docker network inspect <network>
# Test connectivity from a container:
docker exec <container> ping <other-container>
docker exec <container> curl -v http://service:port
docker volume ls
docker volume inspect <volume>
docker run --rm -v <volume>:/data alpine ls -la /data # inspect volume contents
docker logs <container> # check exit reason
docker inspect <container> --format '{{.State.ExitCode}}'
# Common causes:
# 0 → clean exit (expected?)
# 1 → application error (check logs)
# 137 → SIGKILL (OOM kill)
# 139 → segfault
docker system df # disk overview
du -sh /var/lib/docker/containers/ # container overlay sizes
bash scripts/docker-cleanup.sh --aggressive
docker exec <container> cat /etc/resolv.conf
# Fix: add to docker-compose.yml
# dns:
# - 8.8.8.8
# - 1.1.1.1
# Add user to docker group
sudo usermod -aG docker $USER && newgrp docker
scripts/docker-cleanup.sh — Interactive cleanup with dry-run modescripts/docker-health.sh — Multi-container health overviewscripts/docker-log-inspector.py — Regex filtering + severity summary for logsreferences/compose-patterns.md — Docker Compose patterns and recipes