Docker Basic Commands
This guide covers 80% of daily Docker workflows. For advanced use cases (e.g., Docker Compose, Swarm), refer to the official Docker documentation
Image Management
List Images
docker images
docker images --digests
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"Inspect an Image
docker image inspect <image>
docker history <image>Remove Images
docker image rm <image_name_or_id>
docker image rm -f <image_name_or_id> # Force removeRemove Dangling (untagged) Images
docker image prune -fRemove Unused Images (Use With Caution)
docker image prune -aRemove All Images (Extremely Dangerous)
docker rmi -f $(docker images -q)Building Images
Basic Build
docker build -t myapp:v1.3.17 .Tag Multiple Versions in One Build
docker build -t myapp:latest -t myapp:${BUILD_NUMBER} .Disable Cache (Only for Debugging)
docker build --no-cache -t myapp:latest .Enable BuildKit (Recommended)
DOCKER_BUILDKIT=1 docker build -t myapp:latest .Multi-Stage Build (Best Practice for Smaller Images)
Use a builder stage
Copy only compiled artifacts into a slim runtime image
Avoid shipping development dependencies
Container Management
List Containers
docker ps
docker ps -a
docker ps --no-trunc
Run a Container
docker run -d --name myapp -p 8080:80 myapp:latestCommon Run Flags
-dRun detached-p host:containerPort mapping-e KEY=VALUESet environment variables--nameAssign name--restart unless-stoppedRestart policy (recommended for production)--mount type=volume,src=...,dst=...Recommended volume syntax
Lifecycle Commands
docker start <container>
docker stop <container>
docker restart <container>
docker rm <container>Remove All Stopped Containers
docker container prune -fLogging (Critical for Production Stability)
Docker’s default json-file logging driver can grow indefinitely if not configured.
Uncontrolled logs can consume disk space and crash servers.
Recommended Global Log Rotation
Edit or create:
sudo nano /etc/docker/daemon.jsonAdd:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}Restart Docker:
sudo systemctl restart dockerResult:
Each log file max size: 50MB
Max files per container: 3
Total max log size per container: ~150MB
Note: Applies only to newly created containers.
Per-Container Log Configuration (Jenkins / docker run)
docker run -d \
--log-driver json-file \
--log-opt max-size=50m \
--log-opt max-file=3 \
myapp:latestView Logs
docker logs <container>
docker logs -f <container>
docker logs --tail 200 <container>
docker logs --since 1h <container>Emergency Log Cleanup (Safe)
This clears log history without affecting data:
truncate -s 0 /var/lib/docker/containers/<container-id>/*-json.logFind Large Log Files
du -sh /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -hr | headVolume Management (Persistent Data)
List Volumes
docker volume lsInspect Volume
docker volume inspect <volume>Create Volume
docker volume create mydataRemove Unused Volumes (Dangerous)
docker volume prune -fOnly run if you are certain volumes are not needed.
Network Management
List Networks
docker network lsInspect Network
docker network inspect <network>Connect Container to Network
docker network connect <network> <container>Monitoring and Debugging
Real-Time Resource Usage
docker statsInspect Container
docker inspect <container>Access Running Container
docker exec -it <container> /bin/bashDisk Usage & overlay2 Management
Check Docker Disk Usage
docker system df
docker system df -vCheck overlay2 Size
du -sh /var/lib/docker/overlay2
du -h --max-depth=1 /var/lib/docker/overlay2 | sort -hr | headCheck Container Log Usage
du -sh /var/lib/docker/containers/*Safe Cleanup Strategy (Production-Friendly)
Remove Build Cache
Remove Dangling Images
docker image prune -fRemove Unused Containers
docker container prune -fRemove Everything Unused (High Risk)
docker system prune -aProduction Hardening Recommendations
Always enable log rotation.
Avoid using
--no-cachein CI unless debugging.Use multi-stage builds.
Use unique version tags for rollback capability.
Monitor disk usage regularly.
Avoid
docker system prune -ain production without verification.Use restart policies for critical services.
Separate persistent data using volumes.
Monitor container logs for abnormal growth.
Audit overlay2 usage periodically.