Essential Docker Commands: A Comprehensive Guide for DevOps Engineers
A comprehensive collection of essential Docker commands that every DevOps engineer should know, from basic container management to advanced debugging techniques.
Essential Docker Commands Guide
Container Management
Listing Containers
- View Running Containers
docker ps
- View All Containers (Including Stopped)
docker ps -a
- Show Only Container IDs
docker ps -q
Container Operations
- Remove Containers
# Remove a specific container
docker rm container_id
# Remove all stopped containers
docker rm $(docker ps -a -q)
# Force remove running containers
docker rm -f $(docker ps -q)
- Stop Containers
# Stop a specific container
docker stop container_id
# Stop all running containers
docker stop $(docker ps -q)
Image Management
Basic Image Commands
- List Images
# List all images
docker images
# List dangling images
docker images -f "dangling=true"
- Remove Images
# Remove specific image
docker rmi image_id
# Remove all unused images
docker image prune -a
# Remove dangling images
docker image prune
Advanced Image Operations
- Image History
docker history image_name
- Save and Load Images
# Save image to tar file
docker save image_name > image.tar
# Load image from tar file
docker load < image.tar
Container Debugging
Accessing Containers
- Execute Commands in Running Container
# Start an interactive shell
docker exec -it container_id /bin/bash
# Run a specific command
docker exec container_id command
- View Container Logs
# Follow log output
docker logs -f container_id
# Show last n lines
docker logs --tail 100 container_id
# Show timestamps
docker logs -t container_id
Container Inspection
- Detailed Container Information
docker inspect container_id
- Resource Usage Statistics
docker stats container_id
Network Management
Basic Network Commands
- List Networks
docker network ls
- Create Network
docker network create network_name
- Connect Container to Network
docker network connect network_name container_id
Network Inspection
# Inspect network
docker network inspect network_name
# Show container's network settings
docker inspect container_id --format='{{json .NetworkSettings.Networks}}'
Volume Management
Basic Volume Operations
- Create and Manage Volumes
# Create volume
docker volume create volume_name
# List volumes
docker volume ls
# Remove volume
docker volume rm volume_name
- Clean Up Volumes
# Remove all unused volumes
docker volume prune
System Maintenance
System Commands
- System Information
# Show Docker system info
docker info
# Show Docker disk usage
docker system df
- Clean Up System
# Remove all unused containers, networks, images, and volumes
docker system prune -a --volumes
Best Practices
Resource Management
- Regularly clean up unused resources
- Monitor container resource usage
- Use appropriate resource limits
Security
- Never run containers as root unless necessary
- Use official images when possible
- Regularly update base images
Debugging
- Use appropriate logging levels
- Implement health checks
- Monitor container states
Performance
- Use multi-stage builds
- Optimize image layers
- Implement proper caching strategies
Common Troubleshooting Commands
- Container Issues
# Check container logs
docker logs container_id
# Check container processes
docker top container_id
# Show container resource usage
docker stats container_id
- Network Issues
# Check container networking
docker network inspect network_name
# View container IP address
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id
Remember to always use these commands with caution, especially in production environments. Some commands like docker system prune
can have significant impacts on your system.