A tool for building ~10x smaller, self-hostable, read-only container registries
Project description
Husk
A tool for building ~10x smaller, self-hostable, read-only container registries.
Installing
$ pip install husk-cli
Usage
Use Husk to extract a list of images from your local machine:
$ husk extract 'your-domain.com/*'
This creates a dist folder with the following files:
$ tree dist
dist
├── app
│ ├── blobs
│ │ └── <list of blobs here>
│ └── manifests
│ └── <image names>
│ └── <image versions>
├── docker-compose.yml
└── nginx.conf
Copy (or rsync) the dist folder to your server and spin-up the NGINX server:
$ cd dist
$ docker compose up -d
That's it! Now you can pull images from your self-hosted container registry:
$ docker run --rm -it your-domain.com/your-image-here
Why?
Husk offers many benefits over the standard Docker Registry:
- Husk is read-only, giving you secure anonymous access out of the box
- Husk only stores blobs you built locally: blobs available on Docker Hub are deferred to Docker Hub (we call this "blob sharding")
- Husk uses NGINX for fast static file hosting/caching
- Husk supports infinite namespaces for images. For example:
your-domain.com/service/saas-product/backend/api:v1
In contrast, Husk is probably not for you if:
- You frequently need to
docker pushnew images - You don't care about the size of your container registry
- You don't want anonymous access
Target Audience
Husk is primarily meant for FOSS companies and orgs that want to host their images on their own domains.
Husk can extract any built image, but it really starts to shine when extracting wrapper images, Alpine-based images, and other size-optimized images.
Planned Features
- Add flag to disable blob sharding (removes dependency on Docker Hub)
- Package manager aware blob sharding (requires build-time support or other black magic)
- Optional NGINX-based authorization:
- Instance wide access
- Namespace wide access
- Per-image access
- More spec compliant error messages
- Add optional support for the Docker Registry v2
/catalogendpoint deployorsynccommand forrsyncingdistfolder to a remote server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file husk-cli-0.1.0.tar.gz.
File metadata
- Download URL: husk-cli-0.1.0.tar.gz
- Upload date:
- Size: 23.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffbb84872d13f7242fd0bb43a8f19b3aec5ebb039a36d838e3397d1c22783d3a
|
|
| MD5 |
75477367784c2fa1c43289bccad2ef0d
|
|
| BLAKE2b-256 |
cc891662fe5abc9c2f6a08248e826271a09b92442c9b5427a942e6824252dad6
|
File details
Details for the file husk_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: husk_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bde31af75d1f54eeeb3f88161a07ce2a15414372ee346e15588bc08b4e9dffd
|
|
| MD5 |
3a5630d01839de161d09e2494c013d7d
|
|
| BLAKE2b-256 |
4d48c032175df40ea0436104b963d82d652501d087953a9a77f5931eabe4af5b
|