Contents
- What to check before you start
- Step 1. Update system packages
- Step 2. Install dependencies for Docker repository setup
- Step 3. Add the official Docker GPG key
- Step 4. Add the official Docker repository
- Step 5. Install Docker Engine
- Step 6. Verify Docker is running
- Step 7. Allow Docker without sudo
- Step 8. Verify autostart
- Docker Compose note
- Ports and firewall
- What infrastructure fits Docker projects
Docker is one of the most practical ways to run applications in isolated containers. On a VPS, it helps you deploy services faster, separate workloads cleanly, and move environments between servers more predictably.
On Ubuntu 24.04, Docker installation is straightforward, but it is worth doing properly: from the official repository, with the correct key setup, service checks, and a basic understanding of user permissions and exposed ports.
What to check before you start
Before enabling Docker on a server, make sure that:
- you have SSH access to the server;
- the system is updated;
- you have a sudo-enabled user;
- there is enough free disk space for images and containers;
- you understand which services will later be exposed to the network.
If the VPS is already used in production, it is better to treat Docker installation as part of infrastructure setup, not just as a quick package install.
Step 1. Update system packages
Start by refreshing package indexes and installing current updates:
sudo apt update
sudo apt upgrade -y Step 2. Install dependencies for Docker repository setup
Install the required packages:
sudo apt install -y ca-certificates curl gnupg Step 3. Add the official Docker GPG key
Create the key directory and download the official 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 the official 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 Then update package indexes again:
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 This installs:
- docker-ce — Docker Engine;
- docker-ce-cli — command-line tools;
- containerd.io — container runtime;
- docker-buildx-plugin — modern image build tooling;
- docker-compose-plugin — Compose as a Docker plugin.
Step 6. Verify Docker is running
Check service status:
sudo systemctl status docker Check version:
docker --version Run a test container:
sudo docker run hello-world Step 7. Allow Docker without sudo
If you want to run Docker commands without sudo, add your user to the docker group:
sudo usermod -aG docker $USER Then re-login or run:
newgrp docker Verify:
docker ps docker group effectively gives broad control over the host. Do not grant it casually on production servers.Step 8. Verify autostart
sudo systemctl enable docker
sudo systemctl enable containerd Docker Compose note
On modern Ubuntu setups, Compose is usually used as a plugin:
docker compose version Preferred syntax:
docker compose up -d Older guides may still show:
docker-compose up -d Ports and firewall
When you publish a container port, such as:
docker run -d -p 8080:80 nginx that service may become externally reachable. This is why Docker and firewall rules must be considered together, especially on a real VPS.
What infrastructure fits Docker projects
If you plan to run websites, APIs, bots, automation services, or AI tools in containers, start with a predictable server environment where you control networking, resources, volumes, restarts, and access.
For most standard container projects, VPS is enough. If the workload grows and you need stricter resource isolation, look at dedicated servers.
- VPS — for most early-stage container projects;
- dedicated servers — when you need stronger resource guarantees and isolation.
Comments