Docker lets you package applications into containers that run anywhere. Docker Compose manages multi‑container setups (e.g., WordPress + MySQL).

This guide walks you through installing both on Ubuntu 24.04.

What You'll Need

A VPS with Ubuntu 24.04, SSH access, and basic command line skills.

Step 1: Update System

sudo apt update
sudo apt upgrade -y

Step 2: Install Prerequisites

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Step 3: Add Docker's Official Repository

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.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

Step 4: Install Docker Engine

sudo apt install docker-ce -y

Verify it's running: sudo systemctl status docker

Test: sudo docker run hello-world

Step 5: Run Docker Without sudo

sudo usermod -aG docker $USER

Log out and back in.

Step 6: Install Docker Compose

DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
sudo curl -L "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Verify: docker-compose --version

Step 7: Basic Docker Commands

Pull an image: docker pull nginx

Run a container: docker run -d -p 8080:80 nginx

List containers: docker ps

Stop: docker stop container_id

Step 8: Docker Compose Example – WordPress

Create docker-compose.yml:

version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: secret
      WORDPRESS_DB_NAME: wpdb
    volumes:
      - wp_data:/var/www/html
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootsecret
      MYSQL_DATABASE: wpdb
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
volumes:
  wp_data:
  db_data:

Run: docker-compose up -d

Visit http://your_server_ip:8080. You'll see WordPress installation screen.

Common Issues

Permission denied: Log out and back in after adding user to docker group.

Port already used: Change host port (e.g., 8081:80).

Next Steps

Now you can containerize your apps. Learn to write Dockerfiles and explore Docker Hub for pre‑built images.

Need a VPS to practice on? Check our recommended VPS providers.