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

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

Container Operations

  1. 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)
  1. Stop Containers
# 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
# List all images
docker images

# List dangling images
docker images -f "dangling=true"
  1. 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

  1. Image History
docker history image_name
  1. 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

  1. 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
  1. 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

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

Network Management

Basic Network Commands

  1. List Networks
docker network ls
  1. Create Network
docker network create network_name
  1. 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

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

# List volumes
docker volume ls

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

System Maintenance

System Commands

  1. System Information
# Show Docker system info
docker info

# Show Docker disk usage
docker system df
  1. Clean Up System
# 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
# 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
# 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.