Docker, Docker Compose & Must-Have Utilities on Ubuntu 24
February 22, 2026
This tutorial gets your Ubuntu 24 VM (for example the 112-Technitium-DNS_Server VM) ready for running Docker and Docker Compose, plus a small set of must-have utilities that make daily Linux and homelab work easier.
Where This Fits
flowchart LR
A[VM 112-Technitium-DNS_Server] --> B[This tutorial]
B --> C[Docker + Compose + tools]
C --> D[Technitium in Docker]
- Before: You have an Ubuntu 24 VM with a static IP (e.g. from Create VM 112-Technitium-DNS_Server).
- After: Same VM with Docker, Docker Compose, and useful utilities installed. Next: Technitium DNS in Docker.
What You’ll Install
| Tool | Why it’s useful |
|---|---|
| Docker | Run apps in containers (e.g. Technitium DNS). |
| Docker Compose | Run multi-container stacks from one file. |
| curl / wget | Download files and test HTTP from the command line. |
| htop | See CPU and memory usage at a glance. |
| vim or nano | Edit config files easily. |
| net-tools / iproute2 | Inspect network (e.g. ip addr, ss). |
Step 1: Update the System
sudo apt update && sudo apt upgrade -yStep 2: Install Docker (Official Method)
- Add Docker’s repository and install:
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin- Add your user to the
dockergroup so you can run Docker withoutsudo:
sudo usermod -aG docker $USER- Log out and back in (or run
newgrp docker), then check:
docker run hello-worldStep 3: Docker Compose (V2 Plugin)
With the steps above you already have Docker Compose V2 as a plugin. Use it like this:
docker compose versionExample: create a folder and a docker-compose.yml for a later service (e.g. Technitium):
mkdir -p ~/technitium && cd ~/technitium
# You'll add your compose file in the Technitium tutorialStep 4: Must-Have Utilities
Install a small set of tools that help with debugging and day-to-day use:
sudo apt install -y curl wget htop vim nano net-tools iproute2| Command | What it does |
|---|---|
curl URL / wget URL | Download or test a URL. |
htop | Interactive process and memory viewer. |
vim / nano | Text editors for configs. |
ip addr / ss -tlnp | Show IPs and listening ports. |
Quick Check
- Docker:
docker run hello-worldruns and exits successfully. - Docker Compose:
docker compose versionprints a version. - Utilities:
htop,curl -I https://example.com, andip addrwork.
What’s Next?
| Step | Tutorial | What you’ll do |
|---|---|---|
| 1 | Create VM 112-Technitium-DNS_Server | VM with static IP |
| 2 | You are here | Docker + Compose + utilities |
| 3 | Technitium DNS Server in Docker | Install and configure Technitium in Docker |
| 4 | Technitium primary DNS and router | Primary DNS on VM; router and DHCP |