Master 18 Essential Docker Commands for Efficient Container Management
Discover 18 essential Docker commands to streamline container management and boost your workflow.

Docker is a powerhouse for developers and data professionals, making it easy to build, run, and share applications across diverse environments. Whether you're spinning up containers for local development or deploying complex microservices in production, mastering Docker commands is vital for efficiency and consistency. In this guide, we'll walk you through 18 essential Docker commands and concepts—from pulling images to networking—that will help you streamline your workflow.
This diagram shows how developers interact with Docker Engine to build images, run containers, and manage networks/volumes.
Prerequisites
Before diving into Docker commands, here's a quick look at the building blocks of Docker:
- Images: Templates used for creating containers.
- Containers: Lightweight environments to run applications.
- Networks: Structures enabling communication between containers.
- Volumes: Persistent storage areas for data.
These are the main Docker objects you'll interact with. If you're new to Docker, the Introduction to Docker course is a great starting point.
Basic Docker Commands
Let’s begin with foundational commands that kick off your Docker journey:
Docker --version
and info
docker --version
: Displays the Docker CLI version.docker info
: Provides detailed info about your Docker setup, like the kernel version, number of images/containers, and system-wide details.
Docker pull <image>
This command downloads Docker images from a registry, such as Docker Hub. Syntax:
docker pull <image-name>
Example: docker pull debian
grabs the latest Debian image.
Options for this command include bandwidth limits and skipping verification. Check out the visual below:

Docker run <image>
Use this command to create and start containers. Example:
docker run -d --name test-container nginx:alpine
Here, -d
runs the container in detached mode while --name
assigns it a custom name.
Want to restart an already created container? Use docker start <container>
instead.
Docker stop
and start
docker stop <container>
: Stops running containers.docker start <container>
: Restarts stopped containers.
Here are additional options for stopping containers:

Working with Docker Images
Images are at the core of every container. Here’s how you can work with them:
Docker build
A Dockerfile
defines the steps for building an image. Example:
# syntax=docker/dockerfile:1
# Start with a lightweight Node.js base image
FROM node:lts-alpine
# Set the working directory inside the container
WORKDIR /app
# Copy all project files to the container
COPY . .
# Install production dependencies
RUN yarn install --production
# Define the command to start the app
CMD ["node", "src/index.js"]
# Expose port 3000 for external access
EXPOSE 3000
Build the image using:
docker build -t my-app-image .
This tags the image as my-app-image
.
Docker images
List all available images:
docker images
To include intermediate images, use:
docker images -a
Docker rmi <image>
Remove images to free system resources:
docker rmi <image-name>
Force removal of an image still in use:
docker rmi -f <image-name>
Docker Container Management
Get hands-on with commands for managing containers:
Docker exec
Run commands inside active containers:
docker exec -d my-container touch /tmp/new-file
In this example, the touch
command creates a file inside the container.
Docker logs
View container logs to debug apps:
docker logs my-container
Add options like:
--details
: Shows environment variables and labels.--until
: Limits logs up to a time frame.

Docker rm <container>
Remove containers using:
docker rm my-container
Remove stopped containers:
docker container prune
Docker Networking
Networking allows communication between containers. Example commands:
Docker network ls
List all networks:
docker network ls
Docker network create <name>
Create networks for container communication:
docker network create my-network
Use bridge
for single-host networking or overlay
for multi-host setups.
The diagram illustrates how Docker CLI interacts with Docker Engine, which manages containers, networks, and volumes.
Docker Volumes
Volumes store persistent data. Commands include:
Docker volume ls
List all volumes:
docker volume ls

Docker volume create <name>
Create a volume:
docker volume create my-volume
Mount it using:
docker run -v my-volume:/data busybox
Docker Compose Commands
Compose simplifies multi-container app management:
Docker Compose up
Start all services defined in a docker-compose.yml
file:
docker compose up
Run services in the background:
docker compose up --detach
Docker Compose down
Stop and remove all services:
docker compose down

Best Practices for Using Docker Commands
- Use volumes for persistent data instead of container layers.
- Simplify workflows with Docker Compose.
- Regularly clean up unused containers and images using
docker system prune
.
Conclusion
Mastering Docker commands empowers you to build, run, and scale applications seamlessly. From basic tasks like pulling images to advanced setups with Compose, these commands will boost your productivity.
Ready for more? Explore these resources:
FAQs
What are the most commonly used Docker commands?
Some popular commands include docker run
, docker pull
, docker build
, and docker-compose up
.
How do Docker volumes differ from bind mounts?
Volumes are managed by Docker for portability, while bind mounts directly link to host file paths.
Can I run multiple containers with one command?
Yes, docker-compose up
lets you run multiple services defined in a Compose file.
What is the difference between Docker start and Docker run?
docker run
creates a new container and starts it, while docker start
restarts a stopped container.
How do I list all stopped containers?
Use docker ps -a
to view all containers, including stopped ones.
What is the purpose of the Docker exec command?
It lets you run commands inside a running container, useful for debugging.
Is Docker only for Linux-based systems?
No, Docker works on macOS and Windows too, using lightweight VMs for containerization.