Bird
Raised Fist0
Dockerdevops~10 mins

Registry mirroring concept in Docker - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Registry mirroring concept
Client requests image
↓
Check local registry cache
↓
Forward request to mirror registry
↓
Mirror registry fetches image
↓
Serve image to client
↓
Client pulls image
The client asks for an image. If the local cache has it, serve it. If not, forward the request to the mirror registry, which fetches and serves the image.
Execution Sample
Docker
docker pull myregistry.local/myimage:latest
# Local registry checks cache
# If missing, forwards to mirror
# Mirror fetches from upstream
# Image served back to client
This simulates pulling an image using a registry mirror that caches images locally.
Process Table
StepActionLocal Registry CacheMirror Registry ActionClient Output
1Client requests image 'myimage:latest'Cache emptyIdleRequest sent
2Local registry checks cacheImage not foundIdleWaiting
3Local registry forwards request to mirrorCache emptyReceives requestWaiting
4Mirror registry checks own cacheCache emptyImage not foundWaiting
5Mirror fetches image from upstream registryCache emptyDownloading imageWaiting
6Mirror stores image in cacheCache emptyImage cachedWaiting
7Mirror serves image to local registryCache emptyServing imageWaiting
8Local registry caches imageImage cachedIdleReceiving image
9Local registry serves image to clientImage cachedIdleImage received
10Client completes pullImage cachedIdleImage ready locally
💡 Image successfully pulled and cached locally via mirror registry
Status Tracker
VariableStartAfter Step 3After Step 6After Step 8Final
Local Registry Cacheemptyemptyemptycached imagecached image
Mirror Registry Cacheemptyidlecached imagecached imagecached image
Client Staterequest sentwaitingwaitingreceiving imageimage ready
Key Moments - 3 Insights
Why does the local registry forward the request to the mirror?
Because the local registry cache is empty (see execution_table step 2), it cannot serve the image and must ask the mirror to fetch it.
When does the mirror registry cache the image?
After fetching the image from the upstream registry (step 6), the mirror stores it locally to serve future requests faster.
How does the client finally get the image?
The client receives the image after the local registry caches it and serves it back (step 9), completing the pull (step 10).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step does the mirror registry start downloading the image?
AStep 6
BStep 4
CStep 5
DStep 7
💡 Hint
Check the 'Mirror Registry Action' column for when it changes to 'Downloading image'
According to the variable tracker, when does the local registry cache change from empty to cached image?
AAfter Step 8
BAfter Step 6
CAfter Step 3
DFinal
💡 Hint
Look at 'Local Registry Cache' values across steps in variable_tracker
If the local registry already had the image cached, what would happen at Step 2?
AIt would forward the request to the mirror
BIt would serve the image directly to the client
CThe mirror would fetch the image from upstream
DThe client would wait indefinitely
💡 Hint
Refer to execution_table step 2 where cache is checked
Concept Snapshot
Registry mirroring caches images locally to speed up pulls.
Client requests image from local registry.
If missing, local forwards to mirror registry.
Mirror fetches from upstream and caches image.
Local registry caches image from mirror and serves client.
This reduces load and speeds up repeated pulls.
Full Transcript
Registry mirroring means a local registry stores copies of images from an upstream source. When a client asks for an image, the local registry first checks if it has it cached. If not, it asks the mirror registry to get it. The mirror fetches the image from the upstream registry, caches it, and sends it back to the local registry. Then the local registry caches it and serves the client. This process speeds up image pulls and reduces network load by reusing cached images locally.

Practice

(1/5)
1. What is the main purpose of using a registry mirror in Docker?
easy
A. To speed up image downloads by using a closer copy
B. To create new Docker images automatically
C. To secure Docker images with encryption
D. To delete unused Docker images from the local system

Solution

  1. Step 1: Understand what a registry mirror does

    A registry mirror stores copies of Docker images closer to the user to reduce download time.
  2. Step 2: Identify the main benefit

    This setup speeds up image downloads by avoiding long-distance network calls to the main registry.
  3. Final Answer:

    To speed up image downloads by using a closer copy -> Option A
  4. Quick Check:

    Registry mirror purpose = speed up downloads [OK]
Hint: Mirrors make image downloads faster by local caching [OK]
Common Mistakes:
  • Thinking mirrors create images
  • Confusing mirrors with security features
  • Assuming mirrors delete images
2. Which of the following is the correct way to add a registry mirror in Docker's daemon configuration file daemon.json?
easy
A. { "registry-mirror": ["https://mirror.example.com"] }
B. { "registry": ["https://mirror.example.com"] }
C. { "mirrors": ["https://mirror.example.com"] }
D. { "registry-mirrors": ["https://mirror.example.com"] }

Solution

  1. Step 1: Recall the correct key name for mirrors

    The Docker daemon.json uses the key "registry-mirrors" (plural) to list mirror URLs.
  2. Step 2: Match the correct JSON syntax

    The value must be an array of strings with mirror URLs, correctly formatted as shown.
  3. Final Answer:

    { "registry-mirrors": ["https://mirror.example.com"] } -> Option D
  4. Quick Check:

    Key is "registry-mirrors" with array [OK]
Hint: Use plural "registry-mirrors" key with array in daemon.json [OK]
Common Mistakes:
  • Using singular "registry-mirror" key
  • Using wrong key like "mirrors" or "registry"
  • Not using an array for URLs
3. Given the following daemon.json snippet, what will happen when Docker tries to pull an image?
{
  "registry-mirrors": ["https://mirror1.example.com", "https://mirror2.example.com"]
}
medium
A. Docker will try mirror1 first, then mirror2 if mirror1 fails
B. Docker will download from both mirrors simultaneously
C. Docker ignores mirrors and pulls from the default registry only
D. Docker will fail to pull because multiple mirrors are not allowed

Solution

  1. Step 1: Understand mirror priority

    Docker tries mirrors in the order listed, using the first mirror available.
  2. Step 2: Confirm behavior with multiple mirrors

    If the first mirror fails, Docker tries the next mirror in the list before falling back to the default registry.
  3. Final Answer:

    Docker will try mirror1 first, then mirror2 if mirror1 fails -> Option A
  4. Quick Check:

    Mirrors tried in order, fallback if needed [OK]
Hint: Docker tries mirrors in list order, stops at first success [OK]
Common Mistakes:
  • Thinking Docker downloads from all mirrors at once
  • Assuming mirrors are ignored
  • Believing multiple mirrors cause errors
4. You added a registry mirror URL to daemon.json but Docker still pulls images from the default registry. What is the most likely cause?
medium
A. The mirror URL is listed as a string, not inside an array
B. The mirror URL is missing the https:// prefix
C. Docker daemon was not restarted after editing the file
D. Docker does not support registry mirrors

Solution

  1. Step 1: Check Docker daemon reload requirement

    Changes to daemon.json require restarting the Docker daemon to take effect.
  2. Step 2: Identify common mistake

    Not restarting Docker after editing daemon.json causes the old config to remain active.
  3. Final Answer:

    Docker daemon was not restarted after editing the file -> Option C
  4. Quick Check:

    Restart Docker after config changes [OK]
Hint: Always restart Docker after changing daemon.json [OK]
Common Mistakes:
  • Forgetting to restart Docker daemon
  • Ignoring correct JSON array format
  • Assuming Docker lacks mirror support
5. You want to configure Docker to use a registry mirror at https://mirror.example.com and ensure it is used for all image pulls. Which steps should you follow?
hard
A. Set an environment variable DOCKER_MIRROR=https://mirror.example.com and restart Docker
B. Add the mirror URL to daemon.json under "registry-mirrors", then restart Docker daemon
C. Add the mirror URL to ~/.docker/config.json and run docker pull --mirror
D. Run docker mirror add https://mirror.example.com command

Solution

  1. Step 1: Configure mirror in daemon.json

    Add the mirror URL inside the "registry-mirrors" array in Docker's daemon.json file.
  2. Step 2: Restart Docker daemon

    Restart Docker to apply the new mirror configuration so it is used for all image pulls.
  3. Final Answer:

    Add the mirror URL to daemon.json under "registry-mirrors", then restart Docker daemon -> Option B
  4. Quick Check:

    daemon.json + restart = mirror active [OK]
Hint: Edit daemon.json and restart Docker to activate mirror [OK]
Common Mistakes:
  • Trying to configure mirror in wrong file
  • Using non-existent Docker commands
  • Setting environment variables instead of config
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard