This beautiful tool allows you to explore the contents of a registry interactively.
You can even drill down into layers to explore an image's filesystem.
Enter a public image, e.g. "ubuntu:latest":
Enter a public repository, e.g. "ubuntu":
This service lives on Cloud Run and uses google/go-containerregistry for registry interactions.
Not really! Ingress is cheap, Cloud Run is cheap, and GCS is cheap.
To avoid paying for egress, I limit the amount of data that I'll serve directly and instead give you a command you can run on your own machine.
The most expensive part of this is actually the domain name.
Not really! The first time a layer is accessed, I download and index it. Browsing the filesystem just uses that index, and opening a file uses Range requests to load small chunks of the layer as needed.
Since I only have to download the whole layer once, this actually reduces traffic to the registry in a lot of cases, e.g. if you share a link with someone rather than having them pull the whole image on their machine.
In fact, Docker has graciously sponsored this service by providing me an account with unlimited public Docker Hub access. Thanks, Docker!
That's not a question.
Great question! See here.
Tl;dr, you can seek to an arbitrary position in a gzip stream if you know the 32KiB of uncompressed data that comes just before it, so by storing ~1% of the uncompressed layer size, I can jump ahead to predetermined locations and start reading from there rather than reading the entire layer.
Thanks @aidansteele!
Yes! See here.