Skip to main content

Docker

Use this cheat sheet for everyday Docker commands: building images, running containers, checking logs, stopping services, and cleaning unused resources.

Install Check

Check Docker version:

docker --version

Check Docker service:

docker info

On Ubuntu, start and enable Docker:

systemctl start docker
systemctl enable docker

Images

List local images:

docker images

Build an image from the current folder:

docker build -t app-name .

Build with a specific Dockerfile:

docker build -f Dockerfile.prod -t app-name .

Remove an image:

docker rmi image-name

Containers

List running containers:

docker ps

List all containers:

docker ps -a

Run a container:

docker run app-name

Run in the background:

docker run -d app-name

Map host port to container port:

docker run -d -p 8000:8000 app-name

Run with a name:

docker run -d --name ocr-api -p 8000:8000 app-name

Stop a container:

docker stop container-name

Start a stopped container:

docker start container-name

Restart a container:

docker restart container-name

Remove a container:

docker rm container-name

Logs And Shell Access

View logs:

docker logs container-name

Follow logs:

docker logs -f container-name

Open a shell inside a container:

docker exec -it container-name bash

If Bash is not installed:

docker exec -it container-name sh

Environment Variables

Pass one environment variable:

docker run -e API_KEY=value app-name

Use an env file:

docker run --env-file .env app-name

Volumes

Mount a local folder:

docker run -v "$PWD/uploads:/app/uploads" app-name

List volumes:

docker volume ls

Remove a volume:

docker volume rm volume-name

Docker Compose

Start services:

docker compose up

Start in the background:

docker compose up -d

Stop services:

docker compose down

Rebuild and start:

docker compose up -d --build

View compose logs:

docker compose logs -f

Cleanup

Remove stopped containers:

docker container prune

Remove unused images:

docker image prune

Remove unused Docker data:

docker system prune

Remove unused Docker data including unused images:

docker system prune -a

Common Production Flow

For a backend API:

git pull
docker build -t ocr-api .
docker stop ocr-api
docker rm ocr-api
docker run -d --name ocr-api -p 8000:8000 ocr-api

For Docker Compose:

git pull
docker compose up -d --build

Minimal Dockerfile

FROM python:3.10

WORKDIR /app

COPY . .

RUN pip install --no-cache-dir -r requirements.txt

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Key Ideas

  • Image: a packaged app template.
  • Container: a running instance of an image.
  • Port mapping: exposes a container port to the server.
  • Volume: keeps files outside the container lifecycle.
  • Compose: runs multiple services from one config file.