Docker provides a way to package and run applications in isolated environments called containers. Let’s explore the fundamental Docker commands you’ll need when working on a Linux system.
Container Management
Command Description Example docker run
Start a new container docker run -d --name my_nginx -p 8080:80 nginx
docker ps
List running containers docker ps -a
(show all containers)docker stop
Stop a running container docker stop my_nginx
docker start
Start a stopped container docker start my_nginx
docker restart
Restart a container docker restart my_nginx
docker rm
Remove a stopped container docker rm my_nginx
(add -f
to force)docker exec
Run a command in a running container docker exec -it my_nginx bash
docker logs
View container logs docker logs -f my_nginx
(follow logs)docker cp
Copy files between host/container docker cp my_nginx:/file.txt ./
Image Management
Command Description Example docker images
List downloaded images docker images
docker rmi
Remove an image docker rmi nginx
(add -f
to force)docker pull
Download an image docker pull ubuntu:latest
docker push
Upload to a registry docker push my_image:tag
docker build
Build an image from a Dockerfile docker build -t my_image:tag .
Network Management
Command Description Example docker network ls
List networks docker network ls
docker network create
Create a custom network docker network create my_net
docker network inspect
Inspect network details docker network inspect my_net
Volume Management
Command Description Example docker volume create
Create a volume docker volume create my_vol
docker volume ls
List volumes docker volume ls
docker volume rm
Remove a volume docker volume rm my_vol
System & Maintenance
Command Description Example docker info
Display system-wide info docker info
docker system prune
Clean up unused resources docker system prune -a
(⚠️ removes all unused data)docker version
Show Docker version docker version
Common Use Cases
Run a MySQL container with volume and env vars:
docker run -d --name mysql_db \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
mysql:latest
Build and tag a custom image :
docker build -t my_app:v1 -f Dockerfile .
Bind host port to container port :
docker run -d -p 8080:80 --name webserver nginx
Tips
Use -d
for detached mode (run in background).
Use -it
for interactive shells (e.g., docker exec -it
).
Use --rm
to auto-remove containers after they exit.
For advanced workflows, explore Docker Compose for multi-container setups.