Docker Cheat Sheet: Commands Every Developer Should Know
Introduction Docker helps you package an application with everything it needs to run: code, dependencies, environment variables, and runtime settings. This cheat sheet covers the most useful Docker commands for daily development. docker --version docker info docker help docker images docker pull nginx docker pull python:3.12 docker pull node:20 docker rmi image_name docker rmi image_id docker build -t my-app . docker build -f Dockerfile.dev -t my-app-dev . docker run nginx docker run -d nginx docker run --name my-nginx nginx docker run -p 8080:80 nginx This maps port 8080 on your computer to port 80 inside the container. docker run -e APP_ENV=development my-app docker run -it ubuntu bash docker ps docker ps -a docker stop container_name docker start container_name docker restart container_name docker rm container_name docker container prune docker logs container_name docker logs -f container_name docker exec -it container_name bash If bash is not available: docker exec -it container_name sh docker inspect container_name Volumes help you persist data outside the container. docker volume create my-volume docker volume ls docker run -v my-volume:/app/data my-app docker volume rm my-volume docker volume prune Bind mounts connect a folder on your computer to a folder inside the container. docker run -v $(pwd):/app my-app On Windows PowerShell: docker run -v ${PWD}:/app my-app docker network ls docker network create my-network docker run --network my-network --name app my-app docker network rm my-network FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "app.py"] Docker Compose helps you run multiple containers together. docker-compose.yml services: app: build: . ports: - "8000:8000" environment: - APP_ENV=development volumes: - .:/app database: image: postgres:16 environment: - POSTGRES_USER=admin - POSTGRES_PASSWORD=password - POSTGRES_DB=mydb ports: - "5432:5432" docker compose up docker compose up -d docker compose down docker compose up --build docker compose logs docker compose logs -f docker system prune docker system prune -a docker container prune docker image prune docker volume prune Be careful with prune commands because they delete unused Docker resources. docker build -t my-app . docker run -p 8000:8000 my-app docker ps docker ps -a docker stop container_name docker start container_name docker restart container_name docker rm container_name docker rmi image_name docker logs -f container_name docker exec -it container_name bash docker system prune docker compose up docker compose up -d docker compose down docker compose up --build docker compose logs -f docker compose ps docker compose exec app bash Docker is powerful because it makes your application easier to run, share, test, and deploy. Once you understand images, containers, volumes, networks, and Docker Compose, you can package almost any application into a reproducible environment.
