3 min read

Install Docker

Install Docker Desktop on macOS and Windows, Docker Engine on Linux. Verify with docker run hello-world and learn the licensing and resource gotchas.

Install Docker

Docker is the containerization tool every backend tutorial reaches for. On macOS and Windows you install Docker Desktop (a GUI plus a Linux VM running Docker Engine inside it). On Linux you install Docker Engine directly on the host. Both expose the same docker CLI.

macOS

Use Homebrew. Docker Desktop is a cask (GUI app), so use --cask.

# install docker desktop via homebrew

brew install --cask docker

If you don't have Homebrew yet, see Install Homebrew.

Launch the app once from /Applications to start the engine and grant the install its required permissions. After that docker is on your PATH.

Apple Silicon users: pick the Apple Silicon build (Homebrew picks the right one). Some older images are amd64-only and run via Rosetta emulation, which is slower. Add --platform linux/amd64 to docker run when you need that.

Linux

Don't apt install docker.io — it's an older fork. Use Docker's official repo. The convenience script handles it for most distros:

# install docker engine on linux via the official script

curl -fsSL https://get.docker.com | sh

After install, add yourself to the docker group so you don't need sudo for every command. Log out and back in for it to take effect.

# allow your user to run docker without sudo

sudo usermod -aG docker $USER

Windows

Download Docker Desktop from docker.com/products/docker-desktop, or use winget:

# install docker desktop on windows

winget install -e --id Docker.DockerDesktop

Docker Desktop on Windows uses WSL2 as its backend by default. If WSL2 isn't installed, the installer offers to set it up.

Licensing

Docker Desktop is free for personal use, education, open-source projects, and small businesses (under 250 employees and $10M revenue). Larger companies need a paid subscription. On Linux, Docker Engine itself is open-source under the Apache 2.0 license — no Docker Desktop, no licensing question. If your company forbids Docker Desktop, use colima (macOS) or Rancher Desktop as drop-in replacements.

Verify

# run the hello-world image to check the engine works

docker run hello-world

The first run pulls the image (a few MB), runs it, prints a confirmation message, and exits. If you see Cannot connect to the Docker daemon, the engine isn't running — open Docker Desktop, or sudo systemctl start docker on Linux.

Common gotchas

  • Resource limits on Docker Desktop: defaults are 2 CPUs, 4 GB RAM. Real workloads (Postgres + a couple services) hit this fast. Bump to 4 CPUs and 8 GB minimum in Settings → Resources.
  • Disk usage creeps up: images, stopped containers, and dangling volumes pile up. docker system prune -a --volumes reclaims space. Run it monthly.
  • docker-compose vs docker compose: V2 is built into the Docker CLI as docker compose (no hyphen). Old tutorials say docker-compose (the V1 binary). Both still work, V2 is what you want.
  • File-sharing performance on macOS: bind-mounts (host → container) are slow on macOS by default. For dev workloads, use :cached or :delegated flags, or switch to named volumes.

With docker run hello-world working, you have the foundation for running databases, services, and ML runtimes locally.

From the dictionary

Terms used in this post

Quick reference for the term you met above. Each one comes from the AI dictionary.

Machine LearningML
A subset of AI where the system learns patterns from data instead of following hand-written rules. The output is a model — a set of learned numbers that maps inputs to outputs. Spam filters, recommendation systems, and credit-risk scorers are classical ML.
e.g. Gmail's spam filter learns which emails you mark as junk and updates its model — that's machine learning, not a rule someone wrote.

Rate this article

How helpful did you find this?

Newsletter

Get new articles in your inbox

AI engineering, LLM systems, and software architecture — no filler.

No spam. Unsubscribe any time.

Discussion

Comments

Leave a note about the article, architecture choices, or what you would build next.

Comments are stored in Supabase and fetched per post slug.

Loading comments...