One short command, five separate things happening. Hello-world is not a toy - it is a full end-to-end test of the client, the engine, the image store, the network and the registry. This page decodes every line it prints so you know what a healthy Docker looks like.
Every Docker tutorial starts with docker run hello-world, and most skip past what it proved. That is a shame, because when Docker breaks later, this output is your comparison point. Run it, read it properly once, and you will understand the difference between an image and a container better than most beginners - a topic this set also gives its own page.
When you type the command, the docker client (the small program in your terminal) sends the request to the Docker engine running inside the WSL 2 environment. The engine first checks its local image store.
That is what Unable to find image 'hello-world:latest' locally means. Beginners read it as a failure; it is actually the engine honestly reporting an empty shelf and doing the right thing next. The latest part is the image's tag - its version label.
Missing locally, the engine downloads the image from Docker Hub, the public registry, under the name library/hello-world. Images download in layers, and layers already on your machine are never downloaded twice - this is why your second container of the same base starts instantly.
docker images now - hello-world sits in the store, a few kilobytes in sizedocker run hello-world again - no pull lines this time, it starts immediately from the local copyThe engine creates a container from the image - a running instance with its own isolated filesystem and process space - and executes the one tiny program inside it. The program prints the welcome message and finishes, so the container exits.
That exit is normal. Run docker ps and you will see nothing running; run docker ps -a and the exited hello-world container is listed. Not everything in Docker stays running - a container lives exactly as long as its main process.
If all four pass, your install is genuinely healthy. If the command fails, the failure line tells you which stage broke - no engine response means a startup problem (see the fix ladder page), a pull failure means a network or DNS problem, and that distinction saves real time.
Watch the video to see hello-world run live right after the install - and what the screen shows at each stage.
▶️ Watch Full VideoNo. It is the engine reporting that the image was not in the local store yet, immediately before downloading it. You will see it once per new image. If the pull that follows succeeds, everything is healthy.
Because the container already finished and exited - docker ps only lists running containers. Use docker ps -a to see exited ones. A container runs only while its main process runs, and hello-world's process just prints a message and ends.
The engine is running but cannot reach Docker Hub - check your internet connection, any office proxy or firewall, and DNS. On restricted office networks the registry may be blocked by policy, which is an IT conversation, not a Docker fault.