Core Engine Commands
Commands for understanding your Docker installation, checking system health, and diagnosing host-level issues.
System Information
docker version
Show client and server versions. Essential for diagnosing feature availability and API compatibility:
docker version
# Compact format
docker version --format '{{.Server.Version}}'
docker info
Show daemon runtime details -- storage driver, logging config, security options, number of containers/images:
docker info
# Check specific fields
docker info --format '{{.StorageDriver}}'
docker info --format '{{json .SecurityOptions}}'
docker context ls
Show available Docker contexts (environments). Always verify before running commands on production:
docker context ls
# Switch context
docker context use production
Disk Usage
docker system df
High-level storage summary showing total, active, and reclaimable space:
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 12 5 2.3GB 1.1GB (47%)
Containers 5 2 120MB 50MB (41%)
Local Volumes 3 1 500MB 0B (0%)
Build Cache 0 0 0B 0B
Detailed Breakdown
# Per-image, per-container, per-volume sizes
docker system df -v
# Container writable layer sizes
docker ps -s
Event Monitoring
docker system events
Stream real-time daemon events (container start/stop, image pull, network connect, etc.):
# Follow all events
docker system events
# Events from the last 10 minutes
docker system events --since 10m
# Filter by event type
docker system events --filter type=container
docker system events --filter event=die
# Events for a specific container
docker system events --filter container=my-app
| Filter | Values | Example |
|---|---|---|
type | container, image, volume, network, daemon | --filter type=container |
event | start, stop, die, kill, create, destroy | --filter event=die |
container | Name or ID | --filter container=my-app |
image | Image name | --filter image=nginx |
Cleanup Commands
# Remove stopped containers, dangling images, unused networks, build cache
docker system prune
# Also remove all unused images (not just dangling)
docker system prune -a
# Remove items older than 24 hours (safe for CI)
docker system prune -f --filter "until=24h"
docker system prune -a --volumes removes everything not currently in use, including named volumes. Never put this in a cron job.
Formatting Output
Docker supports Go template formatting for any command:
# Custom ps output
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}\t{{.Ports}}'
# JSON output for scripting
docker ps --format '{{json .}}'
# Get specific inspect fields
docker inspect CONTAINER --format '{{.State.Status}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Networks}}'
Commonly Used Format Templates
| Template | What It Shows |
|---|---|
{{.Names}} | Container name |
{{.Status}} | Running status with uptime |
{{.Image}} | Image name:tag |
{{.Ports}} | Published port mappings |
{{.Size}} | Container disk size (with -s flag) |
{{.State.Status}} | Simple status (running/exited) |
{{.Config.User}} | User the container runs as |
{{json .NetworkSettings}} | Full network config as JSON |
Diagnostic Quick Reference
| Goal | Command |
|---|---|
| Check Docker version | docker version |
| Check daemon configuration | docker info |
| Verify target environment | docker context ls |
| Check disk usage | docker system df |
| Detailed disk breakdown | docker system df -v |
| Watch container events live | docker system events |
| Events from last 10 min | docker system events --since 10m |
| Safe cleanup | docker system prune |
| CI cleanup (24h old) | docker system prune -f --filter "until=24h" |
What's Next
- Continue to Image and Build Commands.