Install Docker on Ubuntu 24.04
Step 1 – Install Docker Engine
# Add Docker's GPG key and repository
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/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/$(. /etc/os-release && echo "$ID") $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
Step 2 – Add your user to the docker group
usermod -aG docker $USER
# Log out and back in for the change to take effect
newgrp docker
Step 3 – Verify
docker --version
docker run --rm hello-world
Step 4 – docker compose (V2 plugin)
docker compose version
Step 5 – Example: run Nginx in a container
docker run -d --name nginx \
-p 80:80 \
-v /var/www/html:/usr/share/nginx/html:ro \
nginx:alpine
Step 6 – Example compose.yml
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: apppass
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
docker compose up -d