In a hurry? Make sure/dev/kvm exists, download the package matching your distro from the official Linux install page, and apt-get install ./... (or dnf install ./...) it.
What you need before you start
- A supported distribution. Ubuntu 22.04 or 24.04, Debian 11 or 12, Fedora 39+, RHEL 9, or Arch Linux via the AUR.
- KVM-capable hardware. A 64-bit CPU with virtualization extensions, with
/dev/kvmaccessible to your user. - A systemd-based system. Docker Desktop on Linux registers as a per-user systemd service.
- GNOME, KDE, or MATE recommended for the desktop integration. The engine still works under tiling WMs but you’ll lose the tray icon.
Step 1 — Confirm KVM is available
Three checks confirm KVM is set up correctly:
$ ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 May 6 09:14 /dev/kvm $ lsmod | grep kvm kvm_intel 425984 0 kvm 1216512 1 kvm_intel $ groups | tr ' ' '\n' | grep -E '^kvm$' kvm
The first command confirms the device node exists and is owned by the kvm group. The second confirms the kernel module is loaded. The third confirms your user is in the kvm group. If any check fails:
- Missing
/dev/kvm: virtualization is disabled in BIOS, or you’re inside a VM without nested virtualization. Enable it (Intel VT-x or AMD-V/SVM) and reboot. - Module not loaded:
sudo modprobe kvm_intelorkvm_amd. - Not in group:
sudo usermod -aG kvm $USER, then log out and back in.
Step 2 — Download the right package for your distro
Per-distribution packages are published as a signed .deb for Debian/Ubuntu, an .rpm for Fedora/RHEL, and an AUR package for Arch. Pick the right one on the Linux download page.
On a server or non-desktop Linux box, you may want Docker Engine instead of Desktop — it’s leaner and avoids the licensing tier.
Step 3 — Install via your package manager
Debian / Ubuntu
$ sudo apt-get update
$ sudo apt-get install \
./docker-desktop-4.42.0-amd64.debFedora / RHEL
$ sudo dnf install \
./docker-desktop-4.42.0-x86_64.rpmArch Linux
$ yay -S docker-desktop # or, with paru: $ paru -S docker-desktop
The package manager pulls in any missing dependencies (qemu-system-x86, pass, uidmap, etc.) automatically.
Step 4 — Launch Docker Desktop
Start Docker Desktop from your desktop environment's application launcher. On first launch you'll be asked to accept the Docker Subscription Service Agreement. The engine boots inside a managed Linux VM via KVM (the same backend Docker Desktop uses on other platforms — on Linux the VM is hosted directly by KVM rather than a layered hypervisor).
You can also start the service from a terminal:
$ systemctl --user start docker-desktop $ systemctl --user enable docker-desktop # auto-start on login
Step 5 — Switch to the desktop-linux Docker context
If you also have Docker Engine installed on this host (docker.io package on Ubuntu, for example), the system docker command still talks to the system engine by default. Switch to the Desktop context:
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock desktop-linux unix:///home/you/.docker/desktop/docker.sock $ docker context use desktop-linux desktop-linux
Switching contexts is a no-op if Docker Engine isn’t installed; the Desktop context will be the only one.
Step 6 — Verify the install
$ docker --version Docker version 27.2.0, build d5c9a4b $ docker context show desktop-linux $ docker run --rm hello-world Hello from Docker!
From here you can jump to getting started, which walks you through running a real web server in a container.
Linux-specific configuration
Docker Engine and Docker Desktop on the same host
They coexist. The Desktop context uses a per-user socket; the system Engine uses /var/run/docker.sock. Switch between them with docker context use.
GPU passthrough (NVIDIA)
GPU support inside Docker Desktop on Linux is functional but limited compared to Engine + NVIDIA Container Toolkit on a bare-metal host. If you’re running ML or CUDA workloads, Engine is still the better fit.
Cap memory and CPU
Settings → Resources → memory and CPU sliders. Defaults are 4 GB RAM and 2 cores. Bump to 8 GB / 4 cores for heavier stacks.
Common Linux install errors
- “Could not start kvm: permission denied” — your user isn’t in the
kvmgroup or/dev/kvmisn’t world-accessible.sudo usermod -aG kvm $USER, log out and back in. - GUI launches but the engine never starts — check
journalctl --user -u docker-desktop -ffor the actual error. Most often it’s a missing dependency that the package manager skipped. - Slow file system performance with large bind mounts. Move hot paths into named volumes inside the VM, or use BuildKit’s
RUN --mount=type=cachewhere it makes sense.