Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Docker’s official packages rather than the older distribution builds. Ubuntu and Debian install Docker Engine from Docker’s APT repository; CentOS uses Docker’s RPM repository; Windows 10 and 11 normally use Docker Desktop with a WSL 2 or Hyper-V backend. Remove conflicting packages first, then verify every installation with docker run hello-world. Linux users should also check the systemd service.

Before you install Docker

Choose the instructions for the operating system and edition you actually run. You need an administrator account (or sudo) for package installation. Docker’s current Ubuntu Engine instructions support 64-bit Ubuntu Resolute 26.04 LTS, Noble 24.04 LTS, and Jammy 22.04 LTS on amd64, armhf, arm64, s390x, and ppc64le. Debian and CentOS support depends on the release and architecture supported by Docker’s repository.

Docker recommends distribution packages or Docker Desktop for normal use. Static binaries require manual updates and are mainly intended for testing. Convenience scripts exist in the Linux documentation, but Docker recommends them only for testing and development.

Remove packages that conflict with Docker’s packages

On Ubuntu and Debian, remove older or alternative packages before adding Docker’s repository:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc

If a package is not installed, APT reports that and continues. On CentOS, remove any previously installed Docker or container runtime packages before proceeding:

sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

Removing packages does not automatically delete images, containers, volumes, or files under Docker’s data directory, but always back up important data before changing an existing installation.

Install Docker Engine on Ubuntu

The following uses Docker’s official APT repository and installs Engine, the CLI, containerd, Buildx, and the Compose plugin.

  1. Install repository prerequisites.
    sudo apt update
    sudo apt install ca-certificates curl
  2. Install and authorize Docker’s signing key.
    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
  3. Create the deb822 repository definition.
    sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
    Types: deb
    URIs: https://download.docker.com/linux/ubuntu
    Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
    Components: stable
    Architectures: $(dpkg --print-architecture)
    Signed-By: /etc/apt/keyrings/docker.asc
    EOF
  4. Install Docker.
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. Check the daemon and run Docker’s test container.
    sudo systemctl status docker
    sudo docker run hello-world

The hello-world command downloads a test image, runs it in a container, prints a confirmation message, and exits. A successful run proves that the CLI can contact the daemon and that the daemon can pull and start an image.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Docker Engine on Debian

Debian uses the same package set as Ubuntu, but the repository path and distribution codename are different.

  1. Remove conflicting packages and install prerequisites.
    sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
    sudo apt update
    sudo apt install ca-certificates curl
  2. Add Docker’s signing key.
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
  3. Add the official Debian repository.
    sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
    Types: deb
    URIs: https://download.docker.com/linux/debian
    Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
    Components: stable
    Architectures: $(dpkg --print-architecture)
    Signed-By: /etc/apt/keyrings/docker.asc
    EOF
  4. Install Engine and related tools.
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. Verify the service and image execution.
    sudo systemctl status docker
    sudo docker run hello-world

On Debian testing, or on derivatives such as Kali, the detected codename may not have a matching Docker repository. If APT reports that the release has no installation candidate, replace the detected codename in /etc/apt/sources.list.d/docker.sources with the corresponding Debian codename—for example, trixie—only when that mapping matches your system and Docker’s supported repository.

Install Docker Engine on CentOS

CentOS uses Docker’s RPM repository. Installing the packages does not start the daemon automatically, so enable and start it explicitly.

  1. Remove conflicting packages.
    sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc
  2. Install the repository-management plugin.
    sudo dnf -y install dnf-plugins-core
  3. Add Docker’s official repository.
    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. Install Engine, containerd, Buildx, and Compose.
    sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. Enable Docker at boot and start it now.
    sudo systemctl enable --now docker
  6. Run the verification container.
    sudo docker run hello-world

The installation creates a docker group but does not add your users to it. Until you deliberately configure access, use sudo with Docker commands.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Docker Desktop on Windows 10 or 11

Windows normally runs Linux containers through Docker Desktop. Docker’s current requirements list 64-bit Windows 10 Enterprise, Pro, or Education 22H2 (build 19045), and 64-bit Windows 11 Enterprise, Pro, or Education 23H2 (build 22631) or higher, within Microsoft’s servicing timeline.

Edition and hardware limits

  • WSL 2 requires a 64-bit processor with SLAT support, at least 8 GB of RAM, hardware virtualization enabled in firmware, and the WSL 2 feature.
  • Windows containers require Pro or Enterprise. Home and Education editions support Linux containers only.
  • In firmware, Intel VT-x or AMD-V may be labeled “virtualization technology,” “SVM,” or a similar setting. Enable it before installing if Docker reports that virtualization is unavailable.

Interactive installation

  1. Download Docker Desktop Installer.exe from Docker’s official Windows distribution.
  2. Run the installer and choose either per-user or all-users installation.
  3. On the configuration page, select the WSL 2 or Hyper-V backend available on your machine. WSL 2 is the usual choice for Linux containers.
  4. Complete the wizard and start Docker Desktop from the Start menu.
  5. Open PowerShell and verify the installation:
docker version
docker run hello-world

Install from PowerShell

Per-user installation does not require administrator privileges and installs under %LOCALAPPDATA%ProgramsDockerDesktop:

Start-Process 'Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--user'

For an all-users installation, open an elevated PowerShell window:

Start-Process 'Docker Desktop Installer.exe' -Wait install

After either command finishes, launch Docker Desktop and wait for its status to show that the engine is running before executing docker version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Allow Docker commands without sudo on Linux

Docker’s daemon normally requires sudo. You can add your account to the docker group:

sudo groupadd docker
sudo usermod -aG docker $USER

Log out and back in completely, or refresh the group membership in the current shell:

newgrp docker
docker run hello-world

This is a security decision, not just a convenience setting: Docker explicitly warns that membership in the docker group grants root-level privileges. On Debian and Ubuntu, Docker starts at boot by default. On other systemd distributions, enable both services when required:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Docker Desktop for Linux: when it makes sense

Docker Desktop is also available for Linux as .deb or .rpm packages for Ubuntu, Debian, RHEL, and Fedora on x86_64/amd64. It is optional; the native Engine installation above is generally simpler on a Linux server.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If Engine and Docker Desktop coexist, Docker uses contexts to select the daemon. The native daemon is commonly the default context and Desktop uses desktop-linux:

docker context ls
docker context use default
docker context use desktop-linux

Check the active context before troubleshooting a “missing” image or container: each daemon has its own images, containers, networks, and volumes.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verify, diagnose, and recover

docker: command not found or an unrecognized command

The CLI package is missing, the installation did not finish, or your shell’s PATH has not refreshed. Re-run the package installation, open a new terminal, and check docker version.

Cannot connect to the Docker daemon

On Linux, inspect and start the service:

sudo systemctl status docker
sudo systemctl start docker

On Windows, start Docker Desktop and wait until it reports a running engine. If Desktop cannot start, check that virtualization and the selected WSL 2 or Hyper-V feature are enabled.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

APT reports an unsupported release or no installation candidate

Inspect /etc/os-release and the codename in /etc/apt/sources.list.d/docker.sources. Debian derivatives may need the matching Debian codename rather than the derivative’s name. Do not substitute a random release: an incorrect repository can install incompatible packages.

Permission denied after adding the docker group

The group change applies only to new login sessions. Log out and back in, or run newgrp docker. If the command then works, remember that the group has root-equivalent access.

hello-world cannot download its image

The daemon is running, but it cannot reach the registry. Check DNS, proxy, firewall, and corporate TLS inspection settings. A successful local service status alone does not prove external registry connectivity.

Docker Desktop says virtualization is disabled

Enable hardware virtualization in UEFI/BIOS, confirm that the CPU supports SLAT, and ensure the WSL 2 or Hyper-V Windows feature selected during setup is installed. Reboot Windows after changing firmware or optional-feature settings.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Or skip the browser setup

If you need clean screenshots of a local dashboard, documentation page, or deployed site after setting up Docker, ScreenshotNeo provides a single HTTP request instead of maintaining browser automation. It accepts cookie and consent banners like a visitor, removes more than 60 known consent platforms plus newsletter popups and chat widgets, and bills only clean shots. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; every response identifies the page verdict and billing result in X-Page-Verdict and X-Billed headers.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the complete parameter reference in the ScreenshotNeo API documentation. The same endpoint supports PNG, JPEG, WebP, and PDF output; full-page captures with lazy images, CSS-selector element captures, dark mode, device presets or custom viewports, retina scale, PDF paper and margin settings, custom CSS and JavaScript, clicks, selector or network-idle waits, ad and tracker blocking, custom headers/cookies/user agents, authorization, timezone and geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Parameter names used by other screenshot APIs also work to ease migration.

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo includes an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account to begin.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.