World map

 

BM: Baca dalam Bahasa Melayu

World D5: Ship & Shield

The shop freezer: registries

You will learn: how a registry shares your image with anyone, anywhere.

Checked with Docker Engine 29 on 31 Oct 2026

The problem

On Mei's laptop, docker run you/kedai-api:1.0 finds the image nowhere: pull access denied. Docker transcript: $ docker run you/kedai-api:1.0 Unable to find image 'you/kedai-api:1.0' locally docker: Error response from daemon: pull access denied for you/kedai-api, repository does not exist or may require 'docker login' Run 'docker run --help' for more information

Your laptop~

  • No open hatches

Lunchboxes (containers)

  • No containers yet

Frozen packs (images)

  • No images yet

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

Your API image works on your laptop. Mei types its name on hers: pull access denied. Plain words: no shop freezer has that pack yet.

Watch

A registry: The shop freezer where image packs are stored and shared, like Docker Hub. is a shop freezer for image packs. You push a pack in. Anyone allowed can pull it out. Which of these are freezers?

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

      Watch

      A full image name is an address. Which freezer, whose shelf, which pack, which label? Put the parts in order.

      Left to right. Put these in order. Use the arrows, or drag.

      • ghcr.io
      • /kedai-api
      • /you
      • :1.0

      No freezer in front? Docker uses Docker Hub.

      Try it

      You are logged in to Docker Hub as you. docker tag gives the pack your name. docker push puts it in the freezer. Try both.

      Your laptop~/kedai-api

      • No open hatches

      Lunchboxes (containers)

      • No containers yet

      Frozen packs (images)

      • kedai-api:1.06 layers · 244MB
      • node:24-alpine4 layers · 244MB

      Shop freezer (registry)

      Logged in as you

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

        Predict

        You type docker pull nginx:1.30-alpine. There is no freezer name. Where does it come from?

        Pick one answer.

        Check

        On Mei's laptop, docker pull you/kedai-api:1.0 downloads the pack. docker images now lists it. Docker transcript: $ docker pull you/kedai-api:1.0 1.0: Pulling from you/kedai-api 7b229517ed22: Pull complete 522ca12b284b: Pull complete ef0ad2fdf0fd: Pull complete c728384fb906: Pull complete Digest: sha256:58f245567d7704f3ee882fbada0d807c322906a7e18e66a51994a946fc8c23a8 Status: Downloaded newer image for you/kedai-api:1.0 docker.io/you/kedai-api:1.0 $ docker images i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA you/kedai-api:1.0 58f245567d77 244MB 62.8MB

        Your laptop~

        • No open hatches

        Lunchboxes (containers)

        • No containers yet

        Frozen packs (images)

        • No images yet

        Shop freezer (registry)

        • you/kedai-api:1.0

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

        Back on Mei’s laptop, after your push. Her docker pull finds your pack. Same image, new kitchen.

        You did it!

        You can now share an image through a registry.

        Go deeper (optional)

        Private packs need a login to pull, too. Clouds have freezers too: Amazon ECR, Google Artifact Registry, Azure Container Registry. The commands stay the same: docker tag, docker push, docker pull.

        Real rep (optional), with a free Docker Hub account. A new repository can be public, so never push secrets.

        Real mission

        1. docker login -u YOUR-NAME
        2. docker tag alpine:3.22 YOUR-NAME/first-pack:1.0
        3. docker push YOUR-NAME/first-pack:1.0

        0 of 4 steps done · Your ticks are saved.