DEV Community

Cover image for Docker Cheat-sheet for beginners ๐Ÿณ
keshav Sandhu
keshav Sandhu

Posted on

709 9 6 8 10

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

Please leave your appreciation by commenting on this post!

It takes just one minute and is worth it for your career.

Get started

Top comments (26)

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
 
abdullah-dev0 profile image
Abdullah โ€ข

Adding one more

docker system prune

This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- unused build cache

Collapse
 
devmount profile image
Andreas โ€ข

This is awesome! Instantly added to github.com/devmount/CheatSheets

Thank you!

Collapse
 
mahendrarao profile image
Raavan โ€ข

@devmount Your Github profile is super cool, bro. Much to learn

Collapse
 
devmount profile image
Andreas โ€ข

Thank you so much ๐Ÿค—

Collapse
 
mahmoud974 profile image
Mahmoud Zakaria โ€ข

Thanks!!

Collapse
 
prathmeshjagtap profile image
Prathmesh Jagtap โ€ข

The most used commands in docker.
Thank for Writing.

Collapse
 
vishalvivekm profile image
Vivek Vishal โ€ข

Thank you @keshav___dev

Collapse
 
jangelodev profile image
Joรฃo Angelo โ€ข

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

Collapse
 
tiru5 profile image
Tyrus Malmstrรถm โ€ข

Excellent article, thank you! ๐Ÿ’ฏ

Something that made me smile, you can tell that the banner image was created using AI :D

Collapse
 
keshav___dev profile image
keshav Sandhu โ€ข

If service is there, why not use it ๐Ÿ˜‰

Collapse
 
orashus profile image
Rash Edmund Jr โ€ข

Thanks man

Collapse
 
awinooliyo profile image
Erick Otieno Awino โ€ข

This is incredible.

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

Sentry image

See why 4M developers consider Sentry, โ€œnot bad.โ€

Fixing code doesnโ€™t have to be the worst part of your day. Learn how Sentry can help.

Learn more

๐Ÿ‘‹ Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Communityโ€”every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple โ€œthank youโ€ goes a long wayโ€”express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay