Comprehensive Docker Reference Guide
O
Ohidur Rahman Bappy
MAR 22, 2025
Docker Commands, Help & Tips
Show Commands & Management Commands
docker
Docker Version Information
docker version
Display Docker System Information
docker info
Working with Containers
Run a Container in the Foreground
docker container run -it -p 80:80 nginx
Run a Container in the Background
docker container run -d -p 80:80 nginx
Container Naming
docker container run -d -p 80:80 --name nginx-server nginx
Tip: Understanding docker run
- Searches for the
nginx
image in the local cache - If not found, it pulls from Docker Hub
- Maps port 80 on the host to port 80 on the container
List Running Containers
docker container ls
List All Containers
docker container ls -a
Stop a Container
docker container stop [ID]
Stop All Running Containers
docker stop $(docker ps -aq)
Remove a Container
docker container rm [ID]
Force Remove a Running Container
docker container rm -f [ID]
Retrieve Container Logs
docker container logs [NAME]
Docker Images Commands
List Local Images
docker image ls
Pull an Image
docker pull [IMAGE]
Remove an Image
docker image rm [IMAGE]
Tip: About Images
- Images are application binaries with dependencies
- Host provides the kernel, unlike VMs
Container Information
Inspect a Container
docker container inspect [NAME]
Container Performance Stats
docker container stats [NAME]
Accessing Containers
Access a New NGINX Container
docker container run -it --name [NAME] nginx bash
Run and Access an Ubuntu Container
docker container run -it --name ubuntu ubuntu
Execute Commands in a Running Container
docker container exec -it mysql bash
Tip: Alpine Linux
- Smaller size, uses
apk
for package management
Networking
List Networks
docker network ls
Create and Connect a Network
docker network create [NETWORK_NAME]
docker container run -d --name [NAME] --network [NETWORK_NAME] nginx
Image Tagging & Docker Hub
Retag Existing Image
docker image tag nginx yourname/nginx
Push Image to Docker Hub
docker image push yourname/nginx
Dockerfile Parts
- FROM: Base OS
- ENV: Environment variables
- RUN: Commands to execute
- CMD: Default command for container
Build Image from Dockerfile
docker image build -t [REPONAME] .
Volumes
Check Volumes
docker volume ls
Run with Named Volumes
docker container run -d --name mysql -v mysql-db:/var/lib/mysql mysql
Bind Mounts
Run with Bind Mounts
docker container run -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
Docker Compose
Sample docker-compose.yml
version: '2'
services:
jekyll:
image: bretfisher/jekyll-serve
volumes:
- .:/site
ports:
- '80:4000'
Run Docker Compose
docker-compose up
Clean Up with Docker Compose
docker-compose down