
📋 Table of Contents
What is Docker and Why Use It on a VPS?
Docker is a containerization platform that packages your application and all its dependencies into a lightweight, portable container. Each container runs in an isolated environment, eliminating the classic "it works on my machine" problem.
Docker vs Virtual Machine comparison:
| Feature | Docker Container | Virtual Machine |
|---|---|---|
| Size | Lightweight (MB) | Heavy (GB) |
| Startup time | Seconds | Minutes |
| Resource sharing | Shared kernel | Separate kernel |
| Isolation | Process-level | Hardware-level |
| Overhead | Very low | High |
| Portability | Very high | Medium |
System Requirements
- OS: Ubuntu 20.04, 22.04, or 24.04 LTS (64-bit)
- RAM: Minimum 1GB (2GB+ recommended)
- CPU: 1 vCPU or more
- Disk: 10GB+ free space (SSD)
- Access: root or sudo privileges
- Network: Internet connectivity
Install Docker on Ubuntu 22.04/24.04
Step 1: Update packages
sudo apt update && sudo apt upgrade -y
Step 2: Install dependencies
sudo apt install -y ca-certificates curl gnupg lsb-release
Step 3: Add Docker GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Step 4: Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
Step 5: Install Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Step 6: Verify installation
sudo docker run hello-world
Step 7: Run Docker without sudo
sudo usermod -aG docker $USER
newgrp docker
Essential Docker Commands
Managing Images
docker pull nginx # Download image
docker images # List all images
docker rmi nginx # Remove image
Managing Containers
docker run -d -p 80:80 --name my-nginx nginx
docker ps # Running containers
docker ps -a # All containers
docker stop my-nginx
docker start my-nginx
docker rm my-nginx
Logs and Shell Access
docker logs my-nginx
docker logs -f my-nginx # Follow logs
docker exec -it my-nginx bash
Docker Compose
Docker Compose manages multi-container applications with a single YAML file. It is included with modern Docker CE:
docker compose version
Example docker-compose.yml for WordPress:
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8080:80"
depends_on:
- db
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
docker compose up -d
Running Your First Container
docker run -d --name my-web -p 8080:80 --restart unless-stopped -v /var/www/html:/usr/share/nginx/html:ro nginx
curl http://localhost:8080
--restart unless-stopped for production containers so they restart automatically after a VPS reboot.
Ports, Volumes and Networks
Port Mapping
docker run -d -p 3000:3000 my-app
docker run -d -p 127.0.0.1:5432:5432 postgres
Volumes
docker volume create my-data
docker run -d -v my-data:/data my-app
docker volume ls
docker volume prune
Networks
docker network create my-network
docker run -d --network my-network --name app1 my-app
docker run -d --network my-network --name app2 my-app
Docker Security Best Practices
- Avoid running as root: Use the
USERdirective in Dockerfile - Limit resources:
docker run --memory=512m --cpus=0.5 - Keep images updated: Regularly pull latest base images
- Bind to localhost: Use
-p 127.0.0.1:PORT:PORTwith Nginx reverse proxy - Scan for vulnerabilities: Use Docker Scout or Trivy
Troubleshooting Common Issues
Docker daemon not starting
sudo systemctl status docker
sudo systemctl start docker
sudo systemctl enable docker
Permission denied
sudo usermod -aG docker $USER
# Log out and back in
Port already in use
sudo lsof -i :80
docker stop CONTAINER_NAME
Disk space issues
docker system prune -a
docker volume prune
Summary
Docker dramatically simplifies application deployment on a VPS. The key steps are: install Docker Engine → add user to docker group → run containers with docker run → use Docker Compose for multi-container apps → apply security hardening. AsiaGB VPS plans provide fast SSD storage and 99% Uptime SLA for reliable Docker workloads.
Frequently Asked Questions
-v /host/path:/container/path or named volumes.docker compose without separate installation.-p 127.0.0.1:PORT:PORT), then configure Nginx to proxy from port 80/443 to that localhost port. This provides proper firewall control and enables SSL/TLS via Let's Encrypt.