Tools: Ultimate Guide: Installing Docker Engine on Ubuntu 26.04

Tools: Ultimate Guide: Installing Docker Engine on Ubuntu 26.04

Install Docker

Configure Docker as a System Service

Add Your User to the Docker Group

Run a Containerized Application

Next Steps Running containers on a fresh Ubuntu 26.04 server? The default repositories do not ship a production-ready version of Docker. This guide installs Docker Engine directly from the official Docker repository, with Compose and Buildx included. By the end, you'll have Docker running as a system service with a live Nginx container confirming the install. The official Docker repository gives you the most current Docker Engine builds. Follow these steps to add the GPG key and repo, then install. 1. Install dependency packages: 2. Add Docker's GPG key: 3. Register the Docker repository: 5. Install Docker Engine and plugins: What you just installed: 6. Verify the install: Enable Docker to start automatically when the server boots. 1. Enable and start the service: 2. Check the service status: 3. Stop or restart the service when needed: Adding your user to the docker group allows you to run Docker commands without sudo. Verify the group change took effect: If you see a permission denied error, log out and back in to apply the group change. Pull the official Nginx image and run it as a container to verify the installation. 2. Run the container: 3. Verify the container is running: 4. Open the firewall: Open http://YOUR-SERVER-IP in a browser. The Nginx welcome page confirms the container is running. Docker is now installed and running. From here you can: For the full guide with additional tips, visit the original article on Vultr Docs. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

$ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">apt-transport-https ca-certificates -weight: 500;">curl -y $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">apt-transport-https ca-certificates -weight: 500;">curl -y $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">apt-transport-https ca-certificates -weight: 500;">curl -y $ -weight: 600;">sudo -weight: 500;">curl -fsSL https://download.-weight: 500;">docker.com/linux/ubuntu/gpg -o /etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc $ -weight: 600;">sudo -weight: 500;">curl -fsSL https://download.-weight: 500;">docker.com/linux/ubuntu/gpg -o /etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc $ -weight: 600;">sudo -weight: 500;">curl -fsSL https://download.-weight: 500;">docker.com/linux/ubuntu/gpg -o /etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc] https://download.-weight: 500;">docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | -weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/-weight: 500;">docker.list > /dev/null $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc] https://download.-weight: 500;">docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | -weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/-weight: 500;">docker.list > /dev/null $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/-weight: 500;">apt/keyrings/-weight: 500;">docker.asc] https://download.-weight: 500;">docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | -weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/-weight: 500;">docker.list > /dev/null $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker-ce -weight: 500;">docker-ce-cli containerd.io -weight: 500;">docker-buildx-plugin -weight: 500;">docker-compose-plugin -y $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker-ce -weight: 500;">docker-ce-cli containerd.io -weight: 500;">docker-buildx-plugin -weight: 500;">docker-compose-plugin -y $ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker-ce -weight: 500;">docker-ce-cli containerd.io -weight: 500;">docker-buildx-plugin -weight: 500;">docker-compose-plugin -y $ -weight: 500;">docker --version $ -weight: 500;">docker --version $ -weight: 500;">docker --version $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">stop -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">stop -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">stop -weight: 500;">docker $ -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart -weight: 500;">docker $ -weight: 600;">sudo usermod -aG -weight: 500;">docker $USER $ newgrp -weight: 500;">docker $ -weight: 600;">sudo usermod -aG -weight: 500;">docker $USER $ newgrp -weight: 500;">docker $ -weight: 600;">sudo usermod -aG -weight: 500;">docker $USER $ newgrp -weight: 500;">docker $ -weight: 500;">docker ps $ -weight: 500;">docker ps $ -weight: 500;">docker ps $ -weight: 500;">docker pull nginx:latest $ -weight: 500;">docker pull nginx:latest $ -weight: 500;">docker pull nginx:latest $ -weight: 500;">docker run --name example-nginx -d -p 80:80 nginx:latest $ -weight: 500;">docker run --name example-nginx -d -p 80:80 nginx:latest $ -weight: 500;">docker run --name example-nginx -d -p 80:80 nginx:latest $ -weight: 500;">docker ps $ -weight: 500;">docker ps $ -weight: 500;">docker ps $ -weight: 600;">sudo ufw allow 80/tcp $ -weight: 600;">sudo ufw allow 80/tcp $ -weight: 600;">sudo ufw allow 80/tcp - -weight: 500;">docker-ce: Docker Engine (community edition) - -weight: 500;">docker-ce-cli: CLI client - containerd.io: container runtime - -weight: 500;">docker-buildx-plugin: multi-platform image builds - -weight: 500;">docker-compose-plugin: multi-container orchestration via YAML - --name example-nginx: human-readable container name - -d: run detached (background) - -p 80:80: map host port 80 to container port 80 - Build custom images with a Dockerfile - Orchestrate multi-container apps with -weight: 500;">docker compose - Push images to Docker Hub or a private registry