Docker Cheat Sheet

Docker is a tool that lets you package applications into containers: lightweight, portable environments that include everything needed to run your app.


Basic Concepts

ConceptMeaning
ImageBlueprint (read-only template)
ContainerRunning instance of an image
DockerfileInstructions to build an image
VolumePersistent storage
NetworkCommunication between containers

Images

Pull an image

docker pull nginx

List images

docker images

Remove image

docker rmi nginx

Build image from Dockerfile

docker build -t my-app .

Containers

Run a container

docker run nginx

Run in background (detached)

docker run -d nginx

Name a container

docker run --name web nginx

Map ports

docker run -p 8080:80 nginx

(host:container)


List containers

docker ps        # running
docker ps -a     # all

Stop / start / restart

docker stop container_id
docker start container_id
docker restart container_id

Remove container

docker rm container_id

Force remove running container:

docker rm -f container_id

Execute inside container

docker exec -it container_id bash

or:

docker exec -it container_id sh

Logs & Inspection

View logs

docker logs container_id

Follow logs live:

docker logs -f container_id

Inspect container

docker inspect container_id

Dockerfile Basics

Example:

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

Build from Dockerfile

docker build -t my-node-app .

Volumes

Create volume

docker volume create mydata

Run with volume

docker run -v mydata:/data nginx

Bind mount (local folder)

docker run -v $(pwd):/app nginx

Networks

List networks

docker network ls

Create network

docker network create mynet

Run container in network

docker run --network mynet nginx

Docker Compose (multi-container)

Example file

version: "3.9"
 
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
 
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

Commands

Start services:

docker compose up

Detached mode:

docker compose up -d

Stop services:

docker compose down

Rebuild:

docker compose up --build

Cleanup

Remove unused containers

docker container prune

Remove unused images

docker image prune

Full system cleanup (dangerous)

docker system prune -a

Debugging

View resource usage

docker stats

Check disk usage

docker system df

Useful Shortcuts

docker ps -a          # all containers
docker images         # all images
docker exec -it       # enter container
docker logs -f        # live logs
docker stop $(docker ps -q)
docker rm $(docker ps -aq)

Port Mapping Mental Model

Host Machine        Container
------------        ----------
localhost:8080  →   80 (nginx)
localhost:3000  →   3000 (node)

Key Idea

Docker isolates applications like:

“Run everything as if it has its own computer”

But:

  • shares kernel

  • stays lightweight

  • runs anywhere


Most Used Commands

docker pull
docker run
docker ps
docker stop
docker rm
docker build
docker exec
docker logs
docker compose up
docker compose down

Golden Workflow

docker build -t my-app .
 
docker run -p 3000:3000 my-app
 
docker ps
 
docker logs -f container_id
 
docker stop container_id