DEV Community

Cover image for Docker Cheat-sheet for beginners 🐳
keshav Sandhu
keshav Sandhu

Posted on

Docker Cheat-sheet for beginners 🐳

🔧 Common Docker Commands

  • Start Docker:
  systemctl start docker  # Linux
  open -a Docker  # macOS
Enter fullscreen mode Exit fullscreen mode
  • Check Docker Version:
  docker --version
Enter fullscreen mode Exit fullscreen mode

📦 Working with Containers

  • List Running Containers:
  docker ps
Enter fullscreen mode Exit fullscreen mode
  • List All Containers (Running + Stopped):
  docker ps -a
Enter fullscreen mode Exit fullscreen mode
  • Run a Container (starts and attaches):
  docker run <image_name>
Enter fullscreen mode Exit fullscreen mode
  • Run in Detached Mode:
  docker run -d <image_name>
Enter fullscreen mode Exit fullscreen mode
  • Run with Port Mapping:
  docker run -p <host_port>:<container_port> <image_name>
Enter fullscreen mode Exit fullscreen mode
  • Stop a Running Container:
  docker stop <container_id>
Enter fullscreen mode Exit fullscreen mode
  • Start a Stopped Container:
  docker start <container_id>
Enter fullscreen mode Exit fullscreen mode
  • Remove a Stopped Container:
  docker rm <container_id>
Enter fullscreen mode Exit fullscreen mode

📜 Images

  • List Docker Images:
  docker images
Enter fullscreen mode Exit fullscreen mode
  • Pull an Image from Docker Hub:
  docker pull <image_name>
Enter fullscreen mode Exit fullscreen mode
  • Build an Image from Dockerfile:
  docker build -t <image_name> .
Enter fullscreen mode Exit fullscreen mode
  • Tag an Image:
  docker tag <image_id> <new_image_name>:<tag>
Enter fullscreen mode Exit fullscreen mode
  • Remove an Image:
  docker rmi <image_id>
Enter fullscreen mode Exit fullscreen mode

🔄 Container Management

  • View Logs of a Container:
  docker logs <container_id>
Enter fullscreen mode Exit fullscreen mode
  • Access a Running Container (Interactive Shell):
  docker exec -it <container_id> /bin/bash
Enter fullscreen mode Exit fullscreen mode
  • Copy Files from Container to Host:
  docker cp <container_id>:<path_inside_container> <host_path>
Enter fullscreen mode Exit fullscreen mode

🏗 Docker Networks

  • List Networks:
  docker network ls
Enter fullscreen mode Exit fullscreen mode
  • Create a Network:
  docker network create <network_name>
Enter fullscreen mode Exit fullscreen mode
  • Connect a Running Container to a Network:
  docker network connect <network_name> <container_id>
Enter fullscreen mode Exit fullscreen mode

🐳 Docker Compose

  • Start Services in Detached Mode:
  docker-compose up -d
Enter fullscreen mode Exit fullscreen mode
  • Stop Services:
  docker-compose down
Enter fullscreen mode Exit fullscreen mode
  • Build and Start Containers:
  docker-compose up --build
Enter fullscreen mode Exit fullscreen mode

📊 Inspecting and Monitoring

  • Inspect Container Details:
  docker inspect <container_id>
Enter fullscreen mode Exit fullscreen mode
  • Display Resource Usage (CPU, Memory):
  docker stats
Enter fullscreen mode Exit fullscreen mode

🛠 Volumes

  • List Volumes:
  docker volume ls
Enter fullscreen mode Exit fullscreen mode
  • Create a Volume:
  docker volume create <volume_name>
Enter fullscreen mode Exit fullscreen mode
  • Mount a Volume (during docker run):
  docker run -v <volume_name>:<path_inside_container> <image_name>
Enter fullscreen mode Exit fullscreen mode

💡 Pro Tip: Use docker system prune to remove unused containers, networks, and images.

Feel free to save or bookmark this cheat sheet for quick reference!

Docker #CheatSheet #Containers #DevOps

Top comments (18)

Collapse
 
andreitelteu profile image
Andrei Telteu

You can also make a helper script:
New file at the root folder called dc without extension.
Content example. Modify for your needs.

#!/bin/bash
trap "exit" 0
DC="docker compose" # add  `-f docker/compose.yml` if it's in another folder
if [ $# -eq 0 ]; then
    $DC ps -a
elif [ $1 == "up" ]; then
    $DC up -d
elif [ $1 == "nr" ]; then
    if [ $# -gt 1 ]; then
        $DC exec node su node -c "${*:2}"
    else
        $DC exec node su node
    fi
elif [ $1 == "npm" ]; then
    $DC exec node su node -c "npm ${*:2}"
elif [ $1 == "install" ]; then
    $DC exec node su node -c 'npm install'
elif [ $1 == "recreate" ]; then
    $DC up -d --force-recreate ${*:2}
elif [ $1 == "build" ]; then
    $DC up -d --force-recreate --build ${*:2}
else
    $DC $*
fi
Enter fullscreen mode Exit fullscreen mode

Give execute permission with chmod +x ./dc
And now you can run:

  • ./dc to show all containers with status
  • ./dc up to start in detached mode
  • ./dc install to run npm install in the node container as user node
  • ./dc npm install package-name-here to run any npm command inside node container. Works with ./dc npm run start too
  • ./dc nr interactive exec inside node container
  • ./dc nr node index.js run any command inside node container
  • ./dc recreate applies any modifications to docker-compose.yml
  • ./dc recreate node applies modifications to compose, only for node container
  • ./dc build if you have a custom dockerfile, does run dc up with a fresh build.
  • ./dc logs -n 10 -f node - any other docker-compose command works as expected.
Collapse
 
awinooliyo profile image
Erick Otieno Awino

This is incredible.

Collapse
 
jangelodev profile image
João Angelo

Hi keshav Sandhu,
Top, very nice and helpful !
Thanks for sharing.

Collapse
 
orashus profile image
Rash Edmund Jr

Thanks man

Collapse
 
vishalvivekm profile image
Vivek Vishal

Thank you @keshav___dev

Collapse
 
tauksun profile image
tauksun

Recover shrinking disk space on every build :

  1. sudo docker image prune -a ( removes un-used images )
  2. sudo docker buildx prune ( removes image cache, this holds the most space )
Collapse
 
keshav___dev profile image
keshav Sandhu
Collapse
 
aerabi profile image
Mohammad-Ali A'RÂBI

Great read. I would just suggest you to use Compose v2, which is without a hyphen: docker compose up.

Collapse
 
gonzalo_marcos_1981 profile image
Gonzalo Marcos • Edited

Super helpful! Thanks!

Collapse
 
ymir profile image
Amir H. Moayeri

Great read, thank you 👍

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more