Ultimate Docker Cheat Sheet for Developers
A full reference guide covering installation, images, containers, volumes, networks, Docker Compose, logs, and lifecycle management — all tailored for Ubuntu users.

- Published on
- /0/0/5 mins read/206 views
Share:
On this page
- Installation amp setup
- Install docker official method
- Start amp enable docker service
- Run without sudo
- Verify installation
- Docker images
- List images
- Pull image
- Build image from dockerfile
- Tag image
- Push image to registry
- Remove image
- Docker containers
- List running containers
- List all containers including stopped
- Run a container
- Run with interactive shell
- Start stop restart
- Attach to a running container
- View logs
- Copy files tofrom container
- Remove containers
- Volumes persistent data
- List volumes
- Create a volume
- Use volume in container
- Remove volume
- Docker networks
- List networks
- Create network
- Connect container to network
- Disconnect or remove network
- Docker compose
- Run multi-service stack
- Run in detached mode
- Stop and remove containers
- Build and rebuild images
- View logs
- Restart or stop individual services
- Useful system commands
- Show disk usage
- Clean up unused resources
- Inspect details
- Show resource usage cpu memory
- Shell access into running container
- Check container logs
- Monitor events in real-time
- Export amp import containers
- Advanced operations
- Build amp push to docker hub
- Save amp load images locally
- Limit resources cpuram
- Auto-restart policy
- Docker lifecycle summary
- Permissions amp security
- Add user to docker group
- Check socket permissions
- Restart docker daemon
- Quick test workflow nestjs example
- Build your image
- Run your container
- Check logs
- Stop everything
- Cleanup essentials
Installation & Setup#
Install Docker (Official Method)#
bash
1
2
3
4
5
6
7
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Start & Enable Docker Service#
bash
1
2
sudo systemctl enable docker
sudo systemctl start docker
Run Without sudo#
bash
1
2
sudo usermod -aG docker $USER
newgrp docker
Verify Installation#
bash
1
2
3
docker version
docker info
docker run hello-world
Docker Images#
List Images#
bash
1
docker images
Pull Image#
bash
1
docker pull node:20-alpine
Build Image from Dockerfile#
bash
1
docker build -t my-nest-app .
Tag Image#
bash
1
docker tag my-nest-app myrepo/my-nest-app:latest
Push Image to Registry#
bash
1
docker push myrepo/my-nest-app:latest
Remove Image#
bash
1
docker rmi <image-id>
Docker Containers#
List Running Containers#
bash
1
docker ps
List All Containers (Including Stopped)#
bash
1
docker ps -a
Run a Container#
bash
1
docker run -d -p 3000:3000 --name nest-api my-nest-app
Run with Interactive Shell#
bash
1
docker run -it ubuntu bash
Start / Stop / Restart#
bash
1
2
3
docker start <container-id>
docker stop <container-id>
docker restart <container-id>
Attach to a Running Container#
bash
1
docker exec -it <container-id> bash
View Logs#
bash
1
docker logs -f <container-id>
Copy Files To/From Container#
bash
1
2
docker cp localfile.txt <container-id>:/app/
docker cp <container-id>:/app/logs ./logs
Remove Containers#
bash
1
2
docker rm <container-id>
docker container prune
Volumes (Persistent Data)#
List Volumes#
bash
1
docker volume ls
Create a Volume#
bash
1
docker volume create nest-data
Use Volume in Container#
bash
1
docker run -v nest-data:/usr/src/app/data my-nest-app
Remove Volume#
bash
1
2
docker volume rm <volume-name>
docker volume prune
Docker Networks#
List Networks#
bash
1
docker network ls
Create Network#
bash
1
docker network create backend-network
Connect Container to Network#
bash
1
docker network connect backend-network <container-id>
Disconnect or Remove Network#
bash
1
2
docker network disconnect backend-network <container-id>
docker network rm backend-network
Docker Compose#
Run Multi-Service Stack#
bash
1
docker compose up
Run in Detached Mode#
bash
1
docker compose up -d
Stop and Remove Containers#
bash
1
docker compose down
Build and Rebuild Images#
bash
1
2
docker compose build
docker compose up --build
View Logs#
bash
1
docker compose logs -f
Restart or Stop Individual Services#
bash
1
2
docker compose restart nest
docker compose stop postgres
Useful System Commands#
Show Disk Usage#
bash
1
docker system df
Clean Up Unused Resources#
bash
1
2
docker system prune
docker system prune -a
Inspect Details#
bash
1
2
docker inspect <container-id>
docker inspect <image-id>
Show Resource Usage (CPU, Memory)#
bash
1
docker stats
##Debugging & Maintenance
Shell Access into Running Container#
bash
1
docker exec -it <container-id> sh
Check Container Logs#
bash
1
docker logs -f <container-id>
Monitor Events in Real-Time#
bash
1
docker events
Export & Import Containers#
bash
1
2
docker export <container-id> > backup.tar
docker import backup.tar
Advanced Operations#
Build & Push to Docker Hub#
bash
1
2
3
docker login
docker build -t username/my-nest-app:latest .
docker push username/my-nest-app:latest
Save & Load Images Locally#
bash
1
2
docker save my-nest-app > nest-app.tar
docker load < nest-app.tar
Limit Resources (CPU/RAM)#
bash
1
docker run -d -p 3000:3000 --cpus="1.0" --memory="512m" my-nest-app
Auto-Restart Policy#
bash
1
docker run -d --restart unless-stopped my-nest-app
Docker Lifecycle Summary#
| Action | Command |
|---|---|
| Build image | docker build -t my-app . |
| List images | docker images |
| Run container | docker run -d -p 3000:3000 my-app |
| List containers | docker ps -a |
| Stop container | docker stop <id> |
| Remove container | docker rm <id> |
| Remove image | docker rmi <id> |
| Clean all | docker system prune -a |
Permissions & Security#
Add User to Docker Group#
bash
1
sudo usermod -aG docker $USER
Check Socket Permissions#
bash
1
ls -l /var/run/docker.sock
Restart Docker Daemon#
bash
1
sudo systemctl restart docker
Quick Test Workflow (NestJS Example)#
Build your image#
bash
1
docker build -t nest-api .
Run your container#
bash
1
docker run -d -p 3000:3000 nest-api
Check logs#
bash
1
docker logs -f $(docker ps -q)
Stop everything#
bash
1
2
docker stop $(docker ps -q)
docker system prune -a
Cleanup Essentials#
| Task | Command |
|---|---|
| Remove stopped containers | docker container prune |
| Remove unused images | docker image prune |
| Remove unused volumes | docker volume prune |
| Remove all unused objects | docker system prune -a |
Pro Tip: Always test new Docker commands in a disposable environment before using them in production. Use Compose to isolate your entire NestJS + Database + Redis stack for easy replication.
