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 runStart a new container docker run -d --name my_nginx -p 8080:80 nginxdocker psList running containers docker ps -a (show all containers)docker stopStop a running container docker stop my_nginxdocker startStart a stopped container docker start my_nginxdocker restartRestart a container docker restart my_nginxdocker rmRemove a stopped container docker rm my_nginx (add -f to force)docker execRun a command in a running container docker exec -it my_nginx bashdocker logsView container logs docker logs -f my_nginx (follow logs)docker cpCopy files between host/container docker cp my_nginx:/file.txt ./
Image Management
Command Description Example docker imagesList downloaded images docker imagesdocker rmiRemove an image docker rmi nginx (add -f to force)docker pullDownload an image docker pull ubuntu:latestdocker pushUpload to a registry docker push my_image:tagdocker buildBuild an image from a Dockerfile docker build -t my_image:tag .
Network Management
Command Description Example docker network lsList networks docker network lsdocker network createCreate a custom network docker network create my_netdocker network inspectInspect network details docker network inspect my_net
Volume Management
Command Description Example docker volume createCreate a volume docker volume create my_voldocker volume lsList volumes docker volume lsdocker volume rmRemove a volume docker volume rm my_vol
System & Maintenance
Command Description Example docker infoDisplay system-wide info docker infodocker system pruneClean up unused resources docker system prune -a (⚠️ removes all unused data)docker versionShow 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.