Docker is a platform for building, shipping, and running containerised applications. This guide installs Docker Engine and Docker Compose on Ubuntu 22.04.
Prerequisites
- Ubuntu 22.04 server with sudo privileges
- At least 2 GB RAM recommended
Step 1 — Remove Old Docker Versions
$apt remove docker docker-engine docker.io containerd runcStep 2 — Install Dependencies
$apt update$apt install -y ca-certificates curl gnupg lsb-releaseStep 3 — Add Docker's GPG Key and Repository
$install -m 0755 -d /etc/apt/keyrings$curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg$chmod a+r /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" | tee /etc/apt/sources.list.d/docker.list > /dev/nullStep 4 — Install Docker Engine
$apt update$apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginStep 5 — Verify the Installation
$docker --versionDocker version 26.1.4, build 5650f9b$docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.Step 6 — Run Docker Without Sudo
Add your user to the docker group:
$usermod -aG docker deploy$newgrp dockerStep 7 — Enable Docker on Boot
$systemctl enable docker$systemctl enable containerdStep 8 — Install Docker Compose (Standalone)
$curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose$chmod +x /usr/local/bin/docker-compose$docker-compose --versionDocker Compose version v2.27.1Run a Sample Application
Create a docker-compose.yml for a simple Nginx web server:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped$mkdir html && echo "<h1>Hello from Docker!</h1>" > html/index.html$docker-compose up -d$curl http://localhost<h1>Hello from Docker!</h1>[!NOTE] Remember to open port 80 in your LightYear firewall group if you want to access the web server from the internet.
