Docker Cheat Sheet

Cheet says: Containers make everything portable!

Basics


Run a container

docker run nginx docker run -d nginx # Detached docker run -p 8080:80 nginx # Port mapping docker run -v /host:/container nginx # Volume mount docker run --rm nginx # Remove when stopped docker run -it ubuntu bash # Interactive

List containers

docker ps # Running docker ps -a # All

Stop/Start

docker stop container_id docker start container_id docker restart container_id

Remove

docker rm container_id docker rm -f container_id # Force

Images


List images

docker images

Pull image

docker pull nginx:latest

Build image

docker build -t myapp:1.0 .

Tag image

docker tag myapp:1.0 registry/myapp:1.0

Push to registry

docker push registry/myapp:1.0

Remove image

docker rmi image_id

Logs & Exec


View logs

docker logs container_id docker logs -f container_id # Follow

Execute command in container

docker exec -it container_id bash docker exec container_id ls /app

Dockerfile Basics


FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Docker Compose


docker-compose.yml

version: '3.8' services: web: build: . ports: - "3000:3000" environment: - NODE_ENV=production depends_on: - db db: image: postgres:15 volumes: - pgdata:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=secret volumes: pgdata:

Compose commands

docker compose up docker compose up -d # Detached docker compose down docker compose logs -f docker compose ps docker compose exec web bash

Cleanup


Remove stopped containers

docker container prune

Remove unused images

docker image prune docker image prune -a # All unused

Remove everything unused

docker system prune docker system prune -a --volumes # Nuclear option

Check disk usage

docker system df

Networking


List networks

docker network ls

Create network

docker network create mynet

Connect container to network

docker run --network mynet nginx

Inspect network

docker network inspect mynet

Volumes


List volumes

docker volume ls

Create volume

docker volume create mydata

Mount volume

docker run -v mydata:/data nginx

Inspect volume

docker volume inspect mydata

Remove volume

docker volume rm mydata

Pro Tips


Copy files to/from container

docker cp file.txt container:/path docker cp container:/path/file.txt .

View resource usage

docker stats

Inspect container

docker inspect container_id

Save/Load images

docker save myapp > myapp.tar docker load < myapp.tar