World map

 

BM: Baca dalam Bahasa Melayu

World D6: Under the Hood

Why Mac and Windows need a Linux VM

You will learn: why Docker Desktop runs a small Linux VM, and what that changes for you.

Checked with Docker Engine 29 on 31 Oct 2026

The problem

Aina runs nginx in Docker Desktop on her Mac. She types ps aux on the Mac. nginx is not in the list! Why?

Pick one answer.

Watch

zsh
docker version --format '{{.Client.Os}} / {{.Server.Os}}'
darwin / linux
On a Mac with Docker Desktop: the docker command is a macOS program (darwin), and the engine it talks to runs Linux.

Containers borrow a Linux kernel, and macOS has a different one. So Docker Desktop starts a small Linux VM (Docker Desktop): The small Linux computer Docker Desktop runs on a Mac or PC, because containers need a Linux kernel.. The engine lives there.

Try it

Where does the container’s process really run? Sort each setup.

Drag a card into a box. Or tap the card, then tap the box.

      Predict

      Your Mac has 16 GB. Docker Desktop’s VM is set to 4 GB. A container wants 6 GB. What happens?

      Pick one answer.

      Check

      docker version on the practice laptop: both the Client and Server OS/Arch lines say linux/amd64, and the server lists containerd and runc. Docker transcript: $ docker version Client: Docker Engine - Community Version: 29.9.2 API version: 1.56 Go version: go1.26.10 Git commit: a82e528 Built: Tue Oct 20 18:44:40 2026 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 29.9.2 API version: 1.56 (minimum version 1.40) Go version: go1.26.10 Git commit: 0367cbe Built: Tue Oct 20 18:44:40 2026 OS/Arch: linux/amd64 Experimental: false containerd: Version: v2.4.2 GitCommit: b7a25261e029d68978bbf290df0a62fc819b3c51 runc: Version: 1.5.2 GitCommit: v1.5.2-0-g29dd3dc2 docker-init: Version: 0.19.0 GitCommit: de40ad0

      Your laptop~

      • Laptop port 8080 → web port 80

      Lunchboxes (containers)

      • webrunning
        from nginx:1.30-alpine 8080→80

      Frozen packs (images)

      • nginx:1.30-alpine8 layers · 93.5MB · in use

      1 containers (1 running), 1 images, 0 lockers.

      This practice laptop runs Linux, so both OS/Arch lines say linux. On a Mac, the Client line says darwin. The Server line still says linux.

      Check

      Put a Mac’s docker run -p 8080:80 in order, first at the top.

      First step at the top. Put these in order. Use the arrows, or drag.

      • You type docker run in the Mac terminal
      • Docker Desktop passes localhost:8080 from the Mac to the box
      • The docker command sends the order into the VM
      • nginx runs as a Linux process in the VM
      • dockerd in the Linux VM takes it
      • containerd and runc start the box

      You did it!

      You can now explain why Docker Desktop needs a Linux VM.

      Go deeper (optional)

      Where the story breaks, for all of Part 1: a real lunchbox has walls. A container has blinkers and portions on one shared stove. A kernel bug can reach every box at once. And meal packs are copied, but image layers are shared, never copied.

      Real rep (optional): peek at the hidden kitchen.

      Real mission

      1. docker version
      2. docker info

      0 of 2 steps done · Your ticks are saved.