A comprehensive collection of essential Docker commands that every DevOps engineer should know, from basic container management to advanced debugging techniques.

Container Management

Listing Containers

  1. View Running Containers
bash
docker ps
  1. View All Containers (Including Stopped)
bash
docker ps -a
  1. Show Only Container IDs
bash
docker ps -q

Container Operations

  1. Remove Containers
bash
# 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)
  1. Stop Containers
bash
# Stop a specific container
docker stop container_id

# Stop all running containers
docker stop $(docker ps -q)

Image Management

Basic Image Commands

  1. List Images
bash
# List all images
docker images

# List dangling images
docker images -f "dangling=true"
  1. Remove Images
bash
# Remove specific image
docker rmi image_id

# Remove all unused images
docker image prune -a

# Remove dangling images
docker image prune

Advanced Image Operations

  1. Image History
bash
docker history image_name
  1. Save and Load Images
bash
# Save image to tar file
docker save image_name > image.tar

# Load image from tar file
docker load < image.tar

Container Debugging

Accessing Containers

  1. Execute Commands in Running Container
bash
# Start an interactive shell
docker exec -it container_id /bin/bash

# Run a specific command
docker exec container_id command
  1. View Container Logs
bash
# 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

  1. Detailed Container Information
bash
docker inspect container_id
  1. Resource Usage Statistics
bash
docker stats container_id

Network Management

Basic Network Commands

  1. List Networks
bash
docker network ls
  1. Create Network
bash
docker network create network_name
  1. Connect Container to Network
bash
docker network connect network_name container_id

Network Inspection

bash
# 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

  1. Create and Manage Volumes
bash
# Create volume
docker volume create volume_name

# List volumes
docker volume ls

# Remove volume
docker volume rm volume_name
  1. Clean Up Volumes
bash
# Remove all unused volumes
docker volume prune

System Maintenance

System Commands

  1. System Information
bash
# Show Docker system info
docker info

# Show Docker disk usage
docker system df
  1. Clean Up System
bash
# Remove all unused containers, networks, images, and volumes
docker system prune -a --volumes

Best Practices

  1. Resource Management

    • Regularly clean up unused resources
    • Monitor container resource usage
    • Use appropriate resource limits
  2. Security

    • Never run containers as root unless necessary
    • Use official images when possible
    • Regularly update base images
  3. Debugging

    • Use appropriate logging levels
    • Implement health checks
    • Monitor container states
  4. Performance

    • Use multi-stage builds
    • Optimize image layers
    • Implement proper caching strategies

Common Troubleshooting Commands

  1. Container Issues
bash
# Check container logs
docker logs container_id

# Check container processes
docker top container_id

# Show container resource usage
docker stats container_id
  1. Network Issues
bash
# 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.