Registry Explorer

Registry Explorer

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":

Interesting examples

FAQ

How does this work?

This service lives on Cloud Run and uses google/go-containerregistry for registry interactions.

Isn't this expensive to run?

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.

Isn't this expensive for the registry?

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 can't be true, gzip doesn't support random access!

That's not a question.

Okay then, how does random access work if the layers are gzipped tarballs?

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!

Is this open source?

Yes! See here.