Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Docker CLI Cheat Sheet & DevOps

A practical Docker quick-reference, deployments, troubleshooting, Docker Compose, images, volumes, networks, cleanup, and production operations.

Copy buttons: Every command is placed in a fenced code block. GitHub, VS Code, Obsidian, ChatGPT, and many modern Markdown viewers automatically show a Copy button for fenced code blocks.


Index

  1. Docker Service
  2. Help & Reference
  3. Containers
  4. Container Lifecycle
  5. Execute Commands Inside Containers
  6. Container Logs
  7. Container Inspection
  8. Resource Usage
  9. Copy Files
  10. Images
  11. Build Images
  12. Tag Images
  13. Registry & Docker Hub
  14. Save & Load Images
  15. Volumes
  16. Networks
  17. Docker Disk Usage
  18. Docker Cleanup
  19. Docker Compose: Start
  20. Docker Compose: Status
  21. Docker Compose: Stop / Start / Restart
  22. Docker Compose: Down
  23. Docker Compose: Logs
  24. Docker Compose: Exec / Shell
  25. Docker Compose: One-off Commands
  26. Docker Compose: Build
  27. Docker Compose: Validate Config
  28. Docker Compose: Multiple Files
  29. Buildx
  30. Ports
  31. Docker Events
  32. Filters
  33. Formatted Output
  34. Restart Policies
  35. Resource Limits
  36. Docker Context
  37. Docker Socket & Permissions
  38. Docker Daemon Logs
  39. Docker Storage Paths
  40. Find Large Docker Logs
  41. Production Troubleshooting
  42. Most-used Commands
  43. Deployment Quick Flow
  44. Official Docker References

1. Docker Service

Check Docker version:

docker --version
docker version

Show Docker system information:

docker info

Check Docker service:

sudo systemctl status docker

Start Docker:

sudo systemctl start docker

Stop Docker:

sudo systemctl stop docker

Restart Docker:

sudo systemctl restart docker

Enable Docker on boot:

sudo systemctl enable docker

Enable Docker and containerd on boot:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Disable Docker auto-start:

sudo systemctl disable docker.service
sudo systemctl disable containerd.service

2. Help & Reference

Docker help:

docker --help

Container commands help:

docker container --help

Image commands help:

docker image --help

Volume commands help:

docker volume --help

Network commands help:

docker network --help

Compose help:

docker compose --help

Run command help:

docker run --help

Build command help:

docker build --help

Exec command help:

docker exec --help

3. Containers

List running containers:

docker ps

List all containers:

docker ps -a

Show only running container IDs:

docker ps -q

Show all container IDs:

docker ps -aq

Show latest container:

docker ps -l

Show container sizes:

docker ps -s

Run an image:

docker run IMAGE

Example:

docker run nginx

Run in background:

docker run -d nginx

Run with a custom name:

docker run -d --name nginx nginx

Map a port:

docker run -d --name nginx -p 8080:80 nginx

Interactive shell:

docker run -it ubuntu bash

Delete container automatically after exit:

docker run --rm ubuntu

Set environment variable:

docker run -e APP_ENV=production IMAGE

Use an environment file:

docker run --env-file .env IMAGE

Bind-mount a directory:

docker run -v /host/path:/container/path IMAGE

Use named volume:

docker run -v mysql_data:/var/lib/mysql mysql

Restart automatically unless manually stopped:

docker run --restart=unless-stopped IMAGE

CPU limit:

docker run --cpus="2" IMAGE

Memory limit:

docker run --memory="1g" IMAGE

4. Container Lifecycle

Start container:

docker start CONTAINER

Stop container:

docker stop CONTAINER

Restart container:

docker restart CONTAINER

Pause container:

docker pause CONTAINER

Unpause container:

docker unpause CONTAINER

Kill container immediately:

docker kill CONTAINER

Remove container:

docker rm CONTAINER

Force remove running container:

docker rm -f CONTAINER

Remove multiple containers:

docker rm container1 container2

Remove stopped containers:

docker container prune

Start multiple containers:

docker start container1 container2

Stop all running containers:

docker stop $(docker ps -q)

Remove all exited containers:

docker rm $(docker ps -aq -f status=exited)

5. Execute Commands Inside Containers

Open Bash:

docker exec -it CONTAINER bash

Open sh when Bash is unavailable:

docker exec -it CONTAINER sh

Run PHP version check:

docker exec CONTAINER php -v

List files:

docker exec CONTAINER ls -la

Show environment variables:

docker exec CONTAINER env

Run as root:

docker exec -u root -it CONTAINER bash

Run from a specific working directory:

docker exec -w /var/www/html CONTAINER php artisan migrate

Laravel migration example:

docker exec -it laravel-app php artisan migrate

6. Container Logs

Show logs:

docker logs CONTAINER

Follow logs:

docker logs -f CONTAINER

Last 100 lines:

docker logs --tail 100 CONTAINER

Follow last 100 lines:

docker logs -f --tail 100 CONTAINER

Logs from last 10 minutes:

docker logs --since 10m CONTAINER

Add timestamps:

docker logs -t CONTAINER

Common troubleshooting command:

docker logs -f --tail 200 app

7. Container Inspection

Inspect container:

docker inspect CONTAINER

Inspect image:

docker inspect IMAGE

Inspect network:

docker inspect NETWORK

Inspect volume:

docker inspect VOLUME

Get container IP:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER

Get restart policy:

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' CONTAINER

Get image used by container:

docker inspect -f '{{.Config.Image}}' CONTAINER

8. Resource Usage

Live resource usage:

docker stats

Specific container:

docker stats CONTAINER

One-time resource snapshot:

docker stats --no-stream

Processes inside container:

docker top CONTAINER

9. Copy Files

Host to container:

docker cp ./file.txt CONTAINER:/app/file.txt

Container to host:

docker cp CONTAINER:/app/file.txt ./

Copy directory:

docker cp ./folder CONTAINER:/app/

10. Images

List images:

docker images

Equivalent modern command:

docker image ls

List all images:

docker images -a

Pull image:

docker pull nginx

Pull explicit latest tag:

docker pull nginx:latest

Pull specific version:

docker pull mysql:8.4

Remove image:

docker rmi IMAGE

Alternative:

docker image rm IMAGE

Force remove image:

docker rmi -f IMAGE

Inspect image:

docker image inspect IMAGE

Image history:

docker history IMAGE

Remove dangling images:

docker image prune

Remove all unused images:

docker image prune -a

11. Build Images

Build current directory:

docker build .

Build and tag:

docker build -t myapp .

Build versioned image:

docker build -t myapp:1.0 .

Use custom Dockerfile:

docker build -f Dockerfile.production -t myapp:production .

Build without cache:

docker build --no-cache -t myapp .

Pass build argument:

docker build --build-arg APP_ENV=production -t myapp .

Detailed build output:

docker build --progress=plain .

12. Tag Images

Tag image:

docker tag SOURCE TARGET

Docker Hub example:

docker tag myapp:latest username/myapp:latest

Private registry example:

docker tag myapp:latest registry.example.com/myapp:latest

General image naming format:

[HOST[:PORT]/]NAMESPACE/REPOSITORY[:TAG]

13. Registry & Docker Hub

Login:

docker login

Logout:

docker logout

Login to private registry:

docker login registry.example.com

Push image:

docker push username/myapp:latest

Pull image:

docker pull username/myapp:latest

14. Save & Load Images

Save image to tar:

docker save nginx:latest > nginx.tar

Save using output option:

docker save -o nginx.tar nginx:latest

Load image:

docker load < nginx.tar

Load with input option:

docker load -i nginx.tar

Save compressed:

docker save nginx:latest | gzip > nginx.tar.gz

Load compressed image:

gunzip -c nginx.tar.gz | docker load

15. Volumes

List volumes:

docker volume ls

Create volume:

docker volume create app_data

Inspect volume:

docker volume inspect app_data

Remove volume:

docker volume rm app_data

Remove unused volumes:

docker volume prune

Run container with named volume:

docker run -v app_data:/var/lib/app IMAGE

Inspect volume mount path:

docker volume inspect app_data

16. Networks

List networks:

docker network ls

Create network:

docker network create app-network

Inspect network:

docker network inspect app-network

Remove network:

docker network rm app-network

Remove unused networks:

docker network prune

Connect container:

docker network connect app-network CONTAINER

Disconnect container:

docker network disconnect app-network CONTAINER

Run container directly in network:

docker run --network app-network nginx

Create explicit bridge network:

docker network create --driver bridge app-network

17. Docker Disk Usage

Show Docker disk usage:

docker system df

Detailed disk usage:

docker system df -v

18. Docker Cleanup

Remove stopped containers:

docker container prune

Remove dangling images:

docker image prune

Remove all unused images:

docker image prune -a

Remove unused networks:

docker network prune

Remove unused volumes:

docker volume prune

General cleanup:

docker system prune

More aggressive cleanup:

docker system prune -a

Cleanup including unused volumes:

docker system prune -a --volumes

Check disk usage before cleanup:

docker system df -v

Warning: Be very careful with volume cleanup. Volumes may contain databases or persistent application data.


19. Docker Compose: Start

Start services:

docker compose up

Start in background:

docker compose up -d

Build and start:

docker compose up -d --build

Force recreation:

docker compose up -d --force-recreate

20. Docker Compose: Status

Show services:

docker compose ps

Show all services:

docker compose ps -a

Show images:

docker compose images

Show processes:

docker compose top

Show resource usage:

docker compose stats

21. Docker Compose: Stop / Start / Restart

Stop services:

docker compose stop

Start stopped services:

docker compose start

Restart services:

docker compose restart

Restart one service:

docker compose restart app

Stop MySQL service:

docker compose stop mysql

Start MySQL service:

docker compose start mysql

22. Docker Compose: Down

Stop and remove Compose resources:

docker compose down

Remove volumes too:

docker compose down -v

Remove images:

docker compose down --rmi all

Remove containers, volumes, and images:

docker compose down -v --rmi all

Warning: -v removes project volumes and can delete persistent data.


23. Docker Compose: Logs

Show logs:

docker compose logs

Follow logs:

docker compose logs -f

Last 100 lines:

docker compose logs --tail=100

Follow recent logs:

docker compose logs -f --tail=200

Specific service:

docker compose logs app

Follow Nginx logs:

docker compose logs -f nginx

Follow MySQL logs:

docker compose logs -f mysql

24. Docker Compose: Exec / Shell

Open Bash in service:

docker compose exec app bash

Open sh:

docker compose exec app sh

Laravel migration:

docker compose exec app php artisan migrate

Laravel optimize:

docker compose exec app php artisan optimize

Horizon status:

docker compose exec app php artisan horizon:status

Restart Laravel queues:

docker compose exec app php artisan queue:restart

25. Docker Compose: One-off Commands

Run a command in a temporary container:

docker compose run app COMMAND

Laravel migration:

docker compose run --rm app php artisan migrate

Composer install:

docker compose run --rm app composer install

Node build:

docker compose run --rm node npm run build

Difference:

docker compose exec
→ Runs inside an existing running container.

docker compose run
→ Creates a temporary container for a one-off command.

26. Docker Compose: Build

Build all services:

docker compose build

Build one service:

docker compose build app

Build without cache:

docker compose build --no-cache

Pull newer base images while building:

docker compose build --pull

Start afterward:

docker compose up -d

Common deployment sequence:

docker compose pull
docker compose up -d --remove-orphans

27. Docker Compose: Validate Config

Render and validate config:

docker compose config

Quiet validation:

docker compose config -q

Show defined services:

docker compose config --services

28. Docker Compose: Multiple Files

Use a custom Compose file:

docker compose -f docker-compose.production.yml up -d

Use multiple Compose files:

docker compose -f compose.yml -f compose.prod.yml up -d

29. Buildx

Check Buildx version:

docker buildx version

List builders:

docker buildx ls

Create and use builder:

docker buildx create --name mybuilder --use

Inspect builder:

docker buildx inspect

Multi-platform build:

docker buildx build --platform linux/amd64,linux/arm64 -t username/myapp:latest --push .

30. Ports

Show container port mappings:

docker port CONTAINER

Example:

docker port nginx

Formatted container ports:

docker ps --format 'table {{.Names}}\t{{.Ports}}'

31. Docker Events

Watch Docker events:

docker events

Events from last hour:

docker events --since 1h

32. Filters

Running containers only:

docker ps --filter status=running

Exited containers only:

docker ps --filter status=exited

Filter by name:

docker ps --filter name=app

Dangling images:

docker images --filter dangling=true

33. Formatted Output

Container name and status:

docker ps --format '{{.Names}} {{.Status}}'

Useful container table:

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'

Useful image table:

docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}'

34. Restart Policies

No automatic restart:

docker run --restart=no IMAGE

Always restart:

docker run --restart=always IMAGE

Restart unless manually stopped:

docker run --restart=unless-stopped IMAGE

Restart on failure:

docker run --restart=on-failure IMAGE

Update existing container:

docker update --restart=unless-stopped CONTAINER

35. Resource Limits

Update memory:

docker update --memory 2g CONTAINER

Update CPU:

docker update --cpus 2 CONTAINER

Inspect limits:

docker inspect CONTAINER

36. Docker Context

List contexts:

docker context ls

Show active context:

docker context show

Switch to default:

docker context use default

Create remote context over SSH:

docker context create production --docker "host=ssh://user@server"

Use remote context:

docker context use production

Now Docker commands target that server:

docker ps

Return to local Docker:

docker context use default

37. Docker Socket & Permissions

Inspect Docker socket:

ls -l /var/run/docker.sock

Add current user to Docker group:

sudo usermod -aG docker $USER

Apply group immediately:

newgrp docker

Test Docker access:

docker ps

Security note: Membership in the docker group effectively grants root-level access to the machine.


38. Docker Daemon Logs

Show daemon logs:

sudo journalctl -u docker

Follow daemon logs:

sudo journalctl -u docker -f

Last 100 lines:

sudo journalctl -u docker -n 100

Current boot only:

sudo journalctl -u docker -b

39. Docker Storage Paths

Typical Docker data directory:

/var/lib/docker

Show total size:

sudo du -sh /var/lib/docker

Show storage by top-level directory:

sudo du -h --max-depth=1 /var/lib/docker | sort -h

Prefer Docker's own cleanup commands instead of deleting files manually:

docker system df
docker system prune

40. Find Large Docker Logs

Find large JSON container logs:

sudo find /var/lib/docker/containers -name '*-json.log' -exec du -h {} + | sort -h

41. Production Troubleshooting

Running containers:

docker ps

All containers:

docker ps -a

Resource usage:

docker stats

Follow recent logs:

docker logs -f --tail 200 CONTAINER

Inspect container:

docker inspect CONTAINER

Disk usage:

docker system df

Networks:

docker network ls

Volumes:

docker volume ls

Docker daemon logs:

sudo journalctl -u docker -n 200

Compose service status:

docker compose ps

Compose logs:

docker compose logs -f --tail 200

Validate Compose config:

docker compose config

42. Most-used Commands

These cover a large percentage of everyday DevOps work:

docker ps
docker ps -a
docker images
docker logs -f --tail 200 CONTAINER
docker exec -it CONTAINER bash
docker exec -it CONTAINER sh
docker inspect CONTAINER
docker stats
docker stop CONTAINER
docker start CONTAINER
docker restart CONTAINER
docker rm CONTAINER
docker rmi IMAGE
docker network ls
docker volume ls
docker system df
docker compose ps
docker compose up -d
docker compose up -d --build
docker compose down
docker compose logs -f
docker compose exec app bash
docker compose pull
docker compose restart
docker compose config

43. Deployment Quick Flow

Pull application changes:

git pull

Pull latest container images:

docker compose pull

Build services:

docker compose build

Start/recreate services:

docker compose up -d --remove-orphans

Check service status:

docker compose ps

Review recent logs:

docker compose logs --tail=100

Laravel example:

docker compose exec app php artisan migrate --force
docker compose exec app php artisan optimize
docker compose exec app php artisan queue:restart

44. Official Docker References

Official Docker CLI reference:

https://docs.docker.com/reference/cli/docker/

Official Docker Compose reference:

https://docs.docker.com/reference/cli/docker/compose/

Official Docker cheat sheet PDF:

https://docs.docker.com/get-started/docker_cheatsheet.pdf

Docker Engine Linux post-install guide:

https://docs.docker.com/engine/install/linux-postinstall/

Docker networking reference:

https://docs.docker.com/reference/cli/docker/network/

Docker volume reference:

https://docs.docker.com/reference/cli/docker/volume/

Docker system reference:

https://docs.docker.com/reference/cli/docker/system/

Safety Notes

Before destructive cleanup commands, inspect Docker disk usage:

docker system df -v

Be cautious with:

docker volume prune
docker system prune -a --volumes
docker compose down -v

These commands may remove persistent data such as MySQL, PostgreSQL, Redis, uploads, or application state if that data lives in Docker volumes.


Suggested Aliases

Optional shortcuts for your shell:

alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f --tail=200'
alias dcp='docker compose ps'
alias ddf='docker system df'

Add aliases permanently to Bash:

nano ~/.bashrc

Reload:

source ~/.bashrc

End of Docker CLI Cheat Sheet

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors