Docker Hub's free plan offers one private repository and image download limits. Any additional images or higher pull rates require a paid Pro or Team plan, charged per user per month. Docker Registry on Saplo is your own private storage for built Docker images under your domain, with a simple browser interface for viewing repositories, tags, and layers, with no repository limits and no download limits. Below is a step-by-step guide on how to set up Docker Registry on Saplo.
Why your own registry instead of Docker Hub
Docker Hub is convenient to start with, but it has two weaknesses that your own registry eliminates:
- the free Docker Hub plan only provides one private repository, each subsequent private image requires a paid Pro plan (from about $5 per month) or Team (from about $9 per month per user) if more people are working on the project,
- pull rate limits restrict how many times a day your CI/CD pipeline or production server can pull an image, which, with frequent deployments and many instances of the same application, can realistically block a deployment at the worst possible moment,
- images built in a company's CI/CD and stored in someone else's public cloud are data beyond your control, even if the repository is marked as private.
Docker Registry on Saplo is the official registry:2 image (Docker Distribution) together with a browser UI, both in one Docker container on your Box. No one counts repositories or downloads, and the total cost is just the cost of the Box itself, regardless of how many images and how many times a day your pipeline pulls them.
Requirements
To set up Docker Registry on Saplo, you need:
- A Box with Docker enabled (the engine automatically enables it during installation from the catalog; container nesting, which Saplo has by default, is required),
- A minimum of 512 MB RAM free on the Box and 10 GB disk space for images. The cheapest plan that supports this is Box S for $29 per year,
- A domain or *.saploapp.pl subdomain included in the price of every plan, under which the registry and UI will be hosted,
- A separate database is NOT required. The registry stores built images in the application's data volume, not in an SQL database.
You can find a full description of the application and its location in the catalog on the Docker Registry on Saplo page.
Step-by-step installation
- In the Saplo panel, go to App Catalog and select Docker Registry.
- Select a Box with at least 512 MB of free RAM and 10 GB of free disk space, and a domain or subdomain for the registry.
- Confirm the installation. The engine generates a random administrator password, saves it as a bcrypt hash (the only format supported by the Docker registry in htpasswd authorization mode), sets up two containers,
registryfrom the officialregistry:2image andregistry-uifrom thejoxit/docker-registry-uiimage, and waits until the UI actually responds via HTTP before considering the installation complete. - The UI acts as a reverse proxy to the registry API on the same port and domain, so
docker login,docker pushanddocker pullwork directly at the application's address, without additional ports and without CORS configuration. - Administrator login credentials (login, password) are saved to the
DOCKER-REGISTRY-SETUP.txtfile in the application directory.
First use
- Read your login and password from the
DOCKER-REGISTRY-SETUP.txtfile in the application directory (login isadminby default, password is randomly generated during installation). - Log in from your local Docker with the command
docker login your-domain.saploapp.pland provide the login and password from the file. - Tag the image at the registry address, for example
docker tag my-image:latest your-domain.saploapp.pl/my-image:latest, and push it with the commanddocker push. - Go to the domain address in your browser, log in with the same username and password, and browse repositories, tags, and layers in the joxit/docker-registry-ui UI.
- On the production server or in the CI/CD pipeline, pull the image with the command
docker pull your-domain.saploapp.pl/my-image:latest, after logging in with the same Account.
Docker Registry on Saplo vs. Docker Hub
| Docker Hub Free | Docker Hub Pro/Team | Docker Registry on Saplo | |
|---|---|---|---|
| Private repositories limit | one | unlimited | unlimited |
| Pull rate limit | yes, for anonymous and free accounts | higher, but still counted | none |
| Where images are stored | on Docker Inc servers | on Docker Inc servers | on your Box |
| Cost | $0, but with limits | from about $5 per user per month | the cost of the Box itself (from $29 per year) |
FAQ
Do I need a Docker Hub account or another public registry?
No, Saplo's Docker Registry is completely self-contained. Logging into docker login uses the username and password generated during installation, without requiring an account with an external provider.
Is there a limit to the number of images or downloads? No, the only limit is the disk space of your Box, which you purchase with your plan.
Can I change the administrator password?
Yes, you generate a new bcrypt hash using a one-off httpd:2.4-alpine container (docker run --rm httpd:2.4-alpine htpasswd -Bbn user password), replace the htpasswd file in the application directory, and restart the registry container.
Does the registry require a separate database? No, images and their metadata are stored in the registry container's data volume, without the need for a separate MySQL or Postgres database.
Can I delete old images and tags?
Yes, image deletion is enabled (REGISTRY_STORAGE_DELETE_ENABLED) and available directly from the UI in your browser, without needing SSH access.
If you're currently paying for Docker Hub Pro or Team just to have more than one private repository, contact us. We'll help you set up your own registry.
- #CI/CD
- #DevOps
- #Docker
- #Guide
