Docker Deep Dive · Setup

00 · Setup

Get a current Docker running on your machine — macOS, Windows, or Linux. Ten minutes, once, and every lab in this course works.

⏱ ~10 min · labs repo: pdfarhad/docker-deep-dive

1Install (or update!)

Docker moves fast — an install from a year or two ago is missing tools this course uses later. If you installed it a while ago, update now: Docker Desktop menu → Check for Updates, or reinstall fresh.

OSget it
macOSDocker Desktop for Mac (pick Apple Silicon or Intel)
WindowsDocker Desktop for Windows (WSL 2 backend)
LinuxDocker Engine (Desktop optional)

On macOS and Windows, Docker Desktop quietly runs a small Linux virtual machine — containers are Linux processes, and that VM provides the Linux kernel they share. On Linux, your own kernel does the job directly. You'll feel this once in Lesson 1; otherwise it's invisible.

macOS · Windows app A app B app C small hidden Linux VM (its kernel) Docker Desktop macOS / Windows kernel Linux app A app B app C Docker Engine your own Linux kernel either way: containers share ONE Linux kernel — the course explains why that matters
Why any OS works for this course. Containers always run on a Linux kernel; Desktop brings one along on macOS/Windows, Linux already has one. The labs are identical on all three.

2Verify

Start Docker Desktop (whale icon in the menu bar / system tray), then — in any terminal (PowerShell is fine on Windows):

docker version

You should see both a Client and a Server section. If instead you get Cannot connect to the Docker daemon — Docker Desktop isn't running; start it and retry. Then the classic:

docker run --rm hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

Congratulations — that was a container. Lesson 1 dissects what just happened.

3Get the labs

Every lesson pairs with a folder of runnable labs in the companion repo. Clone it once; git pull before each lesson (it grows with the course):

git clone https://github.com/pdfarhad/docker-deep-dive.git
cd docker-deep-dive

4Optional: log in to Docker Hub

Anonymous pulls from Docker Hub are rate-limited (per 6 h, per IP). This course stays well under the limit, but a free account removes the worry and is needed later for pushing your own image:¹

docker login

5Troubleshooting

symptomfix
command not found: dockerDesktop installed but the CLI isn't on PATH yet — restart your terminal (Desktop adds it), or reinstall.
every pull fails with 401 Unauthorizeda stale Docker Hub login is sending expired credentials. docker logout clears it (anonymous pulls work again); docker login whenever you like.
pulls fail with 429 Too Many Requestsrate limit hit (shared office/campus IP?) — docker login with a free account.
daemon never becomes readyopen Docker Desktop's Dashboard; it shows the engine state and error. Troubleshoot → Restart fixes most sulks.

You're ready when

Start with P1: The Terminal & the Shell — it assumes nothing but this page.

Stuck?

Bring it to class, or open an issue on the course repo — include your OS, the command you ran, and the full error text.

Sources

  1. Docker Docs — Docker Hub usage and limits
  2. Docker Docs — Docker Desktop (install guides per OS)