DevDocsDev Docs
Docker CLI

System Commands

Docker system administration, cleanup, and monitoring commands

System commands help you manage Docker resources, monitor disk usage, and maintain a clean Docker environment.

docker system

Disk Usage

# Show disk usage summary
docker system df

# Detailed disk usage
docker system df -v

# Format output
docker system df --format "table {{.Type}}\t{{.Size}}\t{{.Reclaimable}}"

System Prune

Remove unused data.

# Remove unused data (interactive)
docker system prune

# Remove without confirmation
docker system prune -f

# Remove unused data including volumes
docker system prune --volumes

# Remove all unused images (not just dangling)
docker system prune -a

# Remove data older than 24 hours
docker system prune -a --filter "until=24h"

# Remove everything (dangerous!)
docker system prune -a --volumes -f
Prunedpruneprune -aprune --volumes
Stopped containers
Unused networks
Dangling images
Unused images
Unused volumes
Build cache

Data Loss Warning

docker system prune --volumes removes unused volumes. Make sure you have backups before running.

System Info

# System-wide information
docker system info

# Specific information with format
docker system info --format '{{.ServerVersion}}'
docker system info --format '{{json .RegistryConfig}}' | jq

Individual Prune Commands

# Remove stopped containers
docker container prune

# Remove dangling images
docker image prune

# Remove all unused images
docker image prune -a

# Remove unused volumes
docker volume prune

# Remove unused networks
docker network prune

# Remove build cache
docker builder prune

# Remove all build cache
docker builder prune -a

With Filters

# Prune containers older than 24h
docker container prune --filter "until=24h"

# Prune images without label
docker image prune --filter "label!=keep"

# Prune volumes not labeled 'important'
docker volume prune --filter "label!=important"

docker info

Display system-wide information.

# Full info
docker info

# Specific fields
docker info --format '{{.ServerVersion}}'
docker info --format '{{.OperatingSystem}}'
docker info --format '{{.Architecture}}'
docker info --format '{{.NCPU}}'
docker info --format '{{.MemTotal}}'
docker info --format '{{.DockerRootDir}}'

Key Information

FieldDescription
ServerVersionDocker daemon version
OperatingSystemHost OS
ArchitectureCPU architecture
NCPUNumber of CPUs
MemTotalTotal memory
DockerRootDirDocker data directory
StorageDriverStorage driver (overlay2)
RegistryDefault registry

docker version

Display version information.

# Show version
docker version

# Client version only
docker version --format '{{.Client.Version}}'

# Server version
docker version --format '{{.Server.Version}}'

# JSON output
docker version --format json

docker events

Monitor Docker events in real-time.

# Stream all events
docker events

# Filter by container
docker events --filter "container=web"

# Filter by event type
docker events --filter "event=start"
docker events --filter "event=stop"

# Filter by type
docker events --filter "type=container"
docker events --filter "type=image"
docker events --filter "type=volume"

# Events since timestamp
docker events --since "2024-01-01T00:00:00"

# Events until now minus 1 hour
docker events --until "1h"

# Format output
docker events --format '{{.Type}}: {{.Action}} {{.Actor.Attributes.name}}'

Event Types

docker context

Manage Docker contexts (multiple Docker hosts).

# List contexts
docker context ls

# Show current context
docker context show

# Create context for remote host
docker context create remote --docker "host=ssh://user@host"

# Use different context
docker context use remote

# Run command in specific context
docker --context remote ps

# Remove context
docker context rm remote

docker login / logout

Authenticate with registries.

# Login to Docker Hub
docker login

# Login to private registry
docker login registry.example.com

# Login with username
docker login -u username

# Login with token from stdin
echo $TOKEN | docker login -u username --password-stdin

# Logout
docker logout
docker logout registry.example.com

Monitoring and Debugging

Resource Monitoring

# Live stats for all containers
docker stats

# Stats for specific containers
docker stats web api db

# One-time stats (no stream)
docker stats --no-stream

# Format output
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"

Debug Commands

# Check Docker daemon logs (systemd)
journalctl -u docker.service

# Docker daemon debug mode
dockerd --debug

# Inspect container
docker inspect container_name

# Get container IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

# Check container processes
docker top container_name

# View filesystem changes
docker diff container_name

Maintenance Scripts

Daily Cleanup Script

#!/bin/bash
# cleanup.sh - Daily Docker cleanup

echo "Docker Cleanup - $(date)"

# Remove stopped containers older than 1 day
docker container prune -f --filter "until=24h"

# Remove dangling images
docker image prune -f

# Remove unused networks
docker network prune -f

# Show disk usage
docker system df

echo "Cleanup complete"

Full Reset Script

#!/bin/bash
# reset.sh - Complete Docker reset (DANGEROUS!)

echo "WARNING: This will remove ALL Docker data!"
read -p "Are you sure? (yes/no): " confirm

if [ "$confirm" = "yes" ]; then
    # Stop all containers
    docker stop $(docker ps -q) 2>/dev/null
    
    # Remove everything
    docker system prune -a --volumes -f
    
    echo "Docker reset complete"
else
    echo "Aborted"
fi

Health Check Script

#!/bin/bash
# healthcheck.sh - Check Docker health

echo "=== Docker Health Check ==="

# Docker version
echo -e "\n--- Version ---"
docker version --format 'Client: {{.Client.Version}}\nServer: {{.Server.Version}}'

# Running containers
echo -e "\n--- Running Containers ---"
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# Disk usage
echo -e "\n--- Disk Usage ---"
docker system df

# Unhealthy containers
echo -e "\n--- Unhealthy Containers ---"
docker ps --filter "health=unhealthy" --format "{{.Names}}: {{.Status}}"

Environment Variables

VariableDescription
DOCKER_HOSTDocker daemon socket
DOCKER_CONFIGConfig directory
DOCKER_CERT_PATHTLS cert directory
DOCKER_TLS_VERIFYEnable TLS verification
DOCKER_BUILDKITEnable BuildKit
COMPOSE_PROJECT_NAMECompose project name
# Use remote Docker host
export DOCKER_HOST=tcp://192.168.1.100:2375

# Enable BuildKit
export DOCKER_BUILDKIT=1

# Custom config location
export DOCKER_CONFIG=~/.docker-alt

Troubleshooting

On this page