cheatsheet
Docker Commands Cheatsheet
Essential Docker commands for everyday use - containers, images, volumes, networks, and Docker Compose.
Published: December 12, 2024
Docker Commands Cheatsheet
Container Management
Basic Operations
# List containers
docker ps # Running only
docker ps -a # All containers
# Start/Stop/Restart
docker start <container>
docker stop <container>
docker restart <container>
# Remove containers
docker rm <container>
docker rm -f <container> # Force remove running
docker container prune # Remove all stopped
Run Containers
# Basic run
docker run <image>
# Common flags
docker run -d <image> # Detached mode
docker run -it <image> /bin/bash # Interactive
docker run --name myapp <image> # Named container
docker run -p 8080:80 <image> # Port mapping
docker run -v /host:/container <image> # Volume mount
docker run -e VAR=value <image> # Environment var
docker run --rm <image> # Auto-remove on exit
docker run --network mynet <image> # Custom network
# Full example
docker run -d \
--name webapp \
-p 3000:3000 \
-v $(pwd):/app \
-e NODE_ENV=production \
--restart unless-stopped \
node:18-alpine
Logs & Exec
# View logs
docker logs <container>
docker logs -f <container> # Follow
docker logs --tail 100 <container>
# Execute commands
docker exec -it <container> /bin/bash
docker exec <container> ls -la
Image Management
# List images
docker images
docker images -a # All including intermediate
# Pull/Push
docker pull <image>:<tag>
docker push <image>:<tag>
# Build
docker build -t myapp:1.0 .
docker build -f Dockerfile.prod -t myapp:prod .
# Remove
docker rmi <image>
docker image prune # Remove dangling
docker image prune -a # Remove unused
# Tag
docker tag myapp:latest myrepo/myapp:1.0
Docker Compose
# Start services
docker-compose up
docker-compose up -d # Detached
docker-compose up --build # Rebuild images
# Stop services
docker-compose down
docker-compose down -v # Remove volumes too
# View logs
docker-compose logs
docker-compose logs -f service_name
# Execute in service
docker-compose exec service_name bash
# Scale
docker-compose up -d --scale web=3
Sample docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
environment:
- NODE_ENV=development
depends_on:
- db
db:
image: postgres:15
volumes:
- pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
pgdata:
Volumes
# Create/List/Remove
docker volume create myvolume
docker volume ls
docker volume rm myvolume
docker volume prune
# Inspect
docker volume inspect myvolume
# Use in container
docker run -v myvolume:/data <image>
docker run -v $(pwd):/app <image> # Bind mount
Networks
# Create/List/Remove
docker network create mynet
docker network ls
docker network rm mynet
# Connect containers
docker network connect mynet <container>
docker network disconnect mynet <container>
# Inspect
docker network inspect mynet
System & Cleanup
# System info
docker info
docker version
docker stats # Live resource usage
# Cleanup
docker system prune # Remove unused data
docker system prune -a # Remove all unused
docker system df # Disk usage
Dockerfile Reference
FROM node:18-alpine
WORKDIR /app
# Copy package files first (better caching)
COPY package*.json ./
RUN npm ci --only=production
# Copy application code
COPY . .
# Build arguments
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
# Expose port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/health || exit 1
# Run as non-root user
USER node
CMD ["node", "server.js"]
Quick Reference
| Task | Command |
|---|---|
| Run container | docker run -d -p 8080:80 nginx |
| View logs | docker logs -f container |
| Shell into container | docker exec -it container bash |
| Build image | docker build -t app:1.0 . |
| Stop all containers | docker stop $(docker ps -q) |
| Remove all containers | docker rm $(docker ps -aq) |
| Remove all images | docker rmi $(docker images -q) |
| Clean everything | docker system prune -a |
Tags
dockerdevopscontainerskubernetes