Why the install choice matters
In Level 1 you saw that a container is a normal Linux process. The kernel isolates it with namespaces and limits it with cgroups. That has a practical consequence: containers need a Linux kernel. On a Linux machine the kernel is already there. On Windows and macOS there isn't one, so every tool quietly runs a small Linux virtual machine for you and sends your commands into it.
There are three sensible ways to get going:
| Option | What you get | Runs on | Cost |
|---|---|---|---|
| Docker Desktop | GUI, Docker Engine inside a managed Linux VM, CLI, Compose, Buildx | Windows, macOS, Linux | Free for some users, paid for others (see below) |
| Docker Engine | Just the daemon (dockerd) and the docker CLI |
Linux | Free, open source |
| Podman | A daemonless, Docker-compatible CLI. Rootless by default. Optional Podman Desktop GUI | Linux natively; Windows and macOS through a podman machine VM |
Free, open source |
Think of the Docker CLI as a remote control. Desktop and Engine both give you the TV it points at, which is a background daemon. Podman has no daemon: each podman command starts the container itself.
Read the licence before you install
This is the step people skip, and it is the one that ends up in a meeting with your finance team. According to Docker's own licence page and pricing FAQ, Docker Desktop is free for:
- small businesses with fewer than 250 employees AND less than US$10 million in annual revenue
- personal use
- education
- non-commercial open-source projects
Everyone else needs a paid per-user subscription (Pro, Team or Business). Note the AND: going over either threshold is enough. A 40-person firm with $12M revenue must pay, and so does a company with 300 staff and $5M revenue. Docker's FAQ also says government entities must buy a subscription, and contractors count towards the headcount.
Gotcha: the licence applies to Docker Desktop, the packaged app. Docker Engine is open source (from the Moby project) and needs no subscription. A Linux server running Engine is fine whatever the size of your company.
Prices and terms change, so check docs.docker.com/subscription/desktop-license/ and docker.com/pricing/faq yourself before you choose.
Path A: Docker Desktop on Windows (WSL 2)
Current requirements: 64-bit Windows 10 22H2 (build 19045) or Windows 11 23H2 (build 22631) or later, WSL 2.1.5 or later, hardware virtualisation turned on in BIOS/UEFI, and 8 GB of RAM. WSL 2 is the default back end and most users can install without admin rights.
# 1. Install or update WSL 2 (run in an elevated PowerShell)
wsl --install # first time only; reboot if asked
wsl --update # bring WSL up to date
wsl --version # check: "WSL version: 2.x.y" with x >= 1
# 2. Download "Docker Desktop Installer.exe" from docs.docker.com,
# run it, keep "Use WSL 2 instead of Hyper-V" ticked, then start Docker Desktop.
Path B: Docker Desktop on macOS
Download the build for your chip (Apple silicon or Intel), drag it into Applications and start it. Docker supports the current macOS release and the two before it, and asks for at least 4 GB of RAM. On Apple silicon it recommends Rosetta 2 (softwareupdate --install-rosetta) so that the occasional Intel-only tool still works.
Path C: Docker Engine on Linux (Ubuntu shown)
Use Docker's own apt repository. The distro's docker.io package often lags behind.
# Add Docker's signing key
sudo apt update
sudo apt install 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
# Register the repository
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
sudo apt update
# Engine, CLI, container runtime, plus the Buildx and Compose plugins
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world # needs sudo for now
To stop typing sudo, add yourself to the docker group, then log out and back in:
sudo usermod -aG docker $USER
Trade-off: being in the
dockergroup is effectively root on that machine, because anyone who can talk to the daemon can mount/into a container. That's fine on your laptop. On shared servers, consider Docker's rootless mode instead. Theget.docker.comconvenience script exists too, but Docker recommends it only for test and development machines.
Path D: Podman
# Linux
sudo apt-get -y install podman # Debian/Ubuntu
sudo dnf -y install podman # Fedora
# macOS: brew install podman (or the installer from podman.io)
# Windows: installer from podman.io (uses WSL 2)
# On macOS/Windows, create and start the Linux VM:
podman machine init
podman machine start
The Podman CLI deliberately mirrors Docker's, so podman run, podman ps and the rest work the way you'd expect. Many people simply add alias docker=podman. If you'd like a GUI, there is a separate Podman Desktop app.
Check that it works
Run three commands, each of which checks a different layer:
$ docker version # Client AND Server sections? CLI can reach the daemon.
Client:
Version: ...
Server:
Engine:
Version: ...
$ docker info # Daemon details: storage driver, CPUs, memory, OS
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
If docker version shows Client but then an error such as "Cannot connect to the Docker daemon", the CLI is installed but the engine isn't running. Start Docker Desktop, or run sudo systemctl start docker on Linux.
For Podman, the equivalents are:
podman version
podman info
podman run docker.io/library/hello-world # full name avoids a registry prompt
Choosing
- Linux laptop or server: use Docker Engine (free, the standard choice), or Podman if you want rootless by default and no daemon.
- Windows or Mac, and you qualify for free use: Docker Desktop is the smoothest option.
- Windows or Mac at a large company with no subscription: use Podman (with Podman Desktop), or get your employer to buy Desktop seats.
Key takeaways
- Containers need a Linux kernel. On Windows and macOS every tool runs a hidden Linux VM (WSL 2 on Windows).
- Docker Desktop is free only for companies under 250 employees and $10M revenue, plus personal, education and non-commercial open-source use. Government bodies must pay.
- Docker Engine on Linux is open source and needs no subscription.
- Podman is daemonless, rootless by default and Docker-CLI compatible.
- Check the install with
docker version(both Client and Server),docker infoanddocker run hello-world. - The
dockergroup is effectively root access, so treat it with care.