Published May 22, 2026 · 9 min read · 🏷️ DevOps

Docker Commands Every Developer Must Know

Docker has become essential for modern development. This guide covers the 30 most useful Docker commands with practical examples for building, running, and managing containers.

Getting Started

First, verify Docker is installed:

docker --version
docker compose version  # for docker-compose v2

1. Managing Images

Images are the blueprints for your containers. Pull an image from Docker Hub:

docker pull nginx:latest
docker pull node:20-alpine

List all downloaded images:

docker images
docker images -a  # show intermediate images

Remove unused images to free up disk space:

docker image prune -a      # remove all unused images
docker rmi nginx:latest     # remove specific image

2. Running Containers

Start a container from an image:

docker run nginx
docker run -d nginx        # run in detached mode (background)
docker run -p 8080:80 nginx # map port 8080 to container port 80

Run with a name and environment variables:

docker run -d --name my-app -p 3000:3000 \
  -e NODE_ENV=production \
  -v $(pwd)/data:/app/data \
  my-image:latest

3. Container Lifecycle

View running containers:

docker ps                # running containers only
docker ps -a              # all containers (including stopped)
docker ps --filter "status=exited"

Start, stop, and restart containers:

docker stop my-app
docker start my-app
docker restart my-app

Remove containers:

docker rm my-app          # remove stopped container
docker rm -f my-app        # force remove (even if running)

4. Viewing Logs and Debugging

Stream logs from a running container:

docker logs -f my-app
docker logs --tail 100 my-app  # last 100 lines
docker logs --since 1h my-app   # logs from last hour

Inspect container details:

docker inspect my-app
docker exec -it my-app sh      # open shell inside container

5. Docker Compose Commands

Docker Compose manages multi-container applications. Start all services:

docker compose up -d           # start in background
docker compose up --build       # rebuild before starting

Stop and remove all services:

docker compose down
docker compose down -v          # also remove volumes

View logs and status:

docker compose logs -f
docker compose ps

6. Building Images

Build a custom image from a Dockerfile:

docker build -t my-app:latest .
docker build -t my-app:latest --build-arg NODE_ENV=production .

Build with no cache (useful when you need a fresh build):

docker build --no-cache -t my-app:latest .

7. Cleaning Up

Docker can accumulate a lot of disk space over time. Clean up all unused resources:

docker system prune           # remove stopped containers, unused networks
docker system prune -a         # also remove all unused images
docker system df              # show disk usage

Common Workflows

Development Mode

docker compose up --build -d
docker compose logs -f app
docker compose exec app npm run dev

Production Deployment

docker build -t my-app:latest .
docker tag my-app:latest registry.com/my-app:v1.0.0
docker push registry.com/my-app:v1.0.0

Troubleshooting

Container exits immediately: Check logs with docker logs container-name

Port already in use: Find the process: docker ps | grep 8080 or use lsof -i :8080

Permission denied: On Linux, you may need sudo docker ... or add your user to the docker group.

← Back to Blog
Copied!