I’d like to host my own container images centrally in my network so that I can both cache the images (if dockerhub or similar goes down) but also host my own images that I don’t want public. Anyone doing this?
If you don’t need fancy gui and authentication, registry is easy to set up and works really well: https://hub.docker.com/_/registry
Does registry still have that problem of making it practically impossible to do garbage collection on old images?
Try goharbor.io, that’s what I use. I think (but I’m not sure) that Forgejo/Gitea and Gitlab can also cache images.
Can confirm, gitlab has a container registry built in, at least in the omnibus package installation.
Gittea and Forgejo both have self hosted container registries.
We are using https://goharbor.io/
zot is the newer kid on the block, and a single binary single config file sort of affair.
Apart from the registries you have in GitLab and GitHub if you are looking for something more generic like Docker Hub you have Quay (from RedHat). It works very well and has a pretty nice interface (especially the new one that is in testing).
I moved to quay.io years ago and have never looked back.
I looked into that at one point, but 15$/month is quite steep just for that ( imo )
Well, if you want private images it is normal that they charge you for it. What I advise you to do is to make the images public and mount the private part as a volume. This way you can upload the images wherever you want without worrying.
Another option if you want the resulting image to have something private is to create as much as you can in a public image and have a script that adds the private part as the last layer.
Forgejo supports a ton of repos including docker / OCI images.
We’re using a self hosted Nexus instance at work. You probably don’t need all the features it offers, but it does its job really well. For free, too.
Does docker, pypi, apt, ansible galaxy, etc. I use it at work as part of our undercloud for OpenStack. It’s the go-to for StackHPC, too.
I use the Nexus free version. You can cache docker registries and other repos like apt/yum/pypi/etc.
It works pretty well, but could be overkill compared to some of the other options.
You can use (self hosted) gitlab as a registry storage. We do that locally so we have both code, pipeline and containers in the same place.