Build a Lightweight Docker Registry with Registry & Docker‑Registry‑Browser
This guide walks through setting up a lightweight private Docker image registry using the official Docker registry and the visual docker‑registry‑browser tool, covering installation, configuration, image tagging, pushing, pulling, and running a sample SpringBoot‑Vue e‑commerce application in containers.
In work we sometimes need to set up a private Docker image repository; Harbor can be heavyweight, so here is a lightweight solution using registry and docker-registry-browser with visual management.
Introduction
registry
registry is the official Docker service for storing and distributing Docker images, allowing creation of private image repositories.
docker-registry-browser
docker-registry-browser is a visual management tool based on registry, enabling easy viewing and managing of images stored in registry.
Below is a screenshot of the browser interface.
mall
We will use the mall project’s image as an example. The mall project is a SpringBoot3 + Vue e‑commerce system (60K GitHub stars) with a multi‑module backend and the latest 2024 microservice architecture, deployed with Docker and K8S. It includes a front‑end shop, back‑end admin, and supports a full order flow, covering products, orders, cart, permissions, coupons, members, payments, etc.
Boot project: https://github.com/macrozheng/mall
Cloud project: https://github.com/macrozheng/mall-swarm
Video tutorials: https://www.macrozheng.com/video/
Installation
First we need to install registry and docker-registry-browser, using Docker.
registry
Pull the registry image:
<code>docker pull registry:2</code>Run the registry container:
<code>docker run -p 5000:5000 --name registry2 \
--restart=always \
-e REGISTRY_STORAGE_DELETE_ENABLED="true" \
-d registry:2</code>docker-registry-browser
Pull the browser image:
<code>docker pull klausmeyer/docker-registry-browser</code>Run the browser container:
<code>docker run -p 5001:8080 --name registry-browser \
-e SECRET_KEY_BASE=123456 \
-e DOCKER_REGISTRY_URL=http://192.168.3.101:5000/v2 \
-e ENABLE_DELETE_IMAGES=true \
-d klausmeyer/docker-registry-browser</code>After it starts, access the UI at http://192.168.3.101:5001
Usage
We now use the mall e‑commerce project's images as an example to demonstrate repository usage.
Tag the local image to point to the registry:
<code>docker tag mall/mall-admin:1.0-SNAPSHOT 192.168.3.101:5000/mall/mall-admin:1.0-SNAPSHOT</code>Push the image to the registry:
<code>docker push 192.168.3.101:5000/mall/mall-admin:1.0-SNAPSHOT</code>After pushing, the image appears in docker-registry-browser.
To delete an image, open its detail page in the browser and click the delete button at the bottom.
To test pulling, remove local copies and pull from the registry:
<code># Remove original local images
docker rmi 192.168.3.101:5000/mall/mall-admin:1.0-SNAPSHOT
docker rmi mall/mall-admin:1.0-SNAPSHOT
# Pull from registry
docker pull 192.168.3.101:5000/mall/mall-admin:1.0-SNAPSHOT
# Retag to original name
docker tag 192.168.3.101:5000/mall/mall-admin:1.0-SNAPSHOT mall/mall-admin:1.0-SNAPSHOT</code>Run the mall admin backend API service:
<code>docker run -p 8080:8080 --name mall-admin \
--link mysql:db \
--link redis:redis \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/admin/logs:/var/logs \
-d mall/mall-admin:1.0-SNAPSHOT</code>Run the mall front‑end portal API service:
<code>docker run -p 8085:8085 --name mall-portal \
--link mysql:db \
--link redis:redis \
--link mongo:mongo \
--link rabbitmq:rabbit \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/portal/logs:/var/logs \
-d mall/mall-portal:1.0-SNAPSHOT</code>Conclusion
We have shown how to build a lightweight Docker image repository using registry and docker-registry-browser, which is simpler than the heavyweight Harbor solution.
Project Links
docker-registry-browser : https://github.com/klausmeyer/docker-registry-browser
macrozheng
Dedicated to Java tech sharing and dissecting top open-source projects. Topics include Spring Boot, Spring Cloud, Docker, Kubernetes and more. Author’s GitHub project “mall” has 50K+ stars.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.