Skip to main content

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 push new 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 /catalog endpoint
  • deploy or sync command for rsyncing dist folder to a remote server

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

husk-cli-0.1.0.tar.gz (23.4 kB view details)

Uploaded Source

Built Distribution

husk_cli-0.1.0-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

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

Hashes for husk-cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ffbb84872d13f7242fd0bb43a8f19b3aec5ebb039a36d838e3397d1c22783d3a
MD5 75477367784c2fa1c43289bccad2ef0d
BLAKE2b-256 cc891662fe5abc9c2f6a08248e826271a09b92442c9b5427a942e6824252dad6

See more details on using hashes here.

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

Hashes for husk_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0bde31af75d1f54eeeb3f88161a07ce2a15414372ee346e15588bc08b4e9dffd
MD5 3a5630d01839de161d09e2494c013d7d
BLAKE2b-256 4d48c032175df40ea0436104b963d82d652501d087953a9a77f5931eabe4af5b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page