Images
# List local images
docker images
OR
docker image ls
# Pull an image from a registry
docker pull <image-name>:<tag>
# Build an image from a Dockerfile in current directory
docker build -t <image-name>:<tag> .
# Build an image using a specific Dockerfile
docker build -t <image-name>:<tag> -f <path-to-dockerfile> .
# Tag an image
docker tag <image-id> <repo>/<image-name>:<tag>
# Push an image to a registry
docker push <repo>/<image-name>:<tag>
# Inspect an image's details
docker image inspect <image-name>
# View image history/layers
docker history <image-name>
# Remove an image
docker rmi <image-name>
OR
docker image rm <image-name>
# Remove all unused (dangling) images
docker image prune
# Remove all images not used by any container
docker image prune -a
Containers
# Run a new container
docker run <image-name>
# Run a container in detached mode with a custom name
docker run -d --name <container-name> <image-name>
# Run a container with port mapping
docker run -d -p <host-port>:<container-port> <image-name>
# Run a container with an interactive shell
docker run -it <image-name> /bin/bash
# Run a container with a volume mounted
docker run -d -v <host-path>:<container-path> <image-name>
# Run a container with an environment variable
docker run -d -e <VAR_NAME>=<value> <image-name>
# List running containers
docker ps
# List all containers (including stopped)
docker ps -a
# Start a stopped container
docker start <container-name>
# Stop a running container
docker stop <container-name>
# Restart a container
docker restart <container-name>
# Pause/unpause a container
docker pause <container-name>
docker unpause <container-name>
# Rename a container
docker rename <old-name> <new-name>
# Inspect a container's details
docker inspect <container-name>
# View resource usage stats
docker stats <container-name>
# Remove a stopped container
docker rm <container-name>
# Force remove a running container
docker rm -f <container-name>
# Remove all stopped containers
docker container prune
Exec & Logs
# Execute a command inside a running container
docker exec -it <container-name> /bin/bash
# Run a single command inside a running container
docker exec <container-name> <command>
# View container logs
docker logs <container-name>
# Follow (stream) container logs
docker logs -f <container-name>
# View the last N lines of logs
docker logs --tail <N> <container-name>
# Copy a file from container to host
docker cp <container-name>:<container-path> <host-path>
# Copy a file from host to container
docker cp <host-path> <container-name>:<container-path>
Volumes
# List volumes
docker volume ls
# Create a volume
docker volume create <volume-name>
# Inspect a volume
docker volume inspect <volume-name>
# Remove a volume
docker volume rm <volume-name>
# Remove all unused volumes
docker volume prune
Network
# List networks
docker network ls
# Create a network
docker network create <network-name>
# Inspect a network
docker network inspect <network-name>
# Connect a running container to a network
docker network connect <network-name> <container-name>
# Disconnect a container from a network
docker network disconnect <network-name> <container-name>
# Remove a network
docker network rm <network-name>
# Remove all unused networks
docker network prune
System
# Show docker disk usage
docker system df
# Remove all unused containers, images, networks, and build cache
docker system prune
# Remove all unused containers, images (including unused, not just dangling), networks, and volumes
docker system prune -a --volumes
# Show docker version info
docker version
# Show system-wide docker info
docker info
Docker Compose
# Start services defined in docker-compose.yml (detached)
docker compose up -d
# Stop and remove services, networks
docker compose down
# Rebuild images before starting
docker compose up -d --build
# View logs for all services
docker compose logs -f
# List running services
docker compose ps
# Execute a command in a running service
docker compose exec <service-name> /bin/bash
# Stop services without removing them
docker compose stop