go-containerregistry VS official-images

Compare go-containerregistry vs official-images and see what are their differences.

go-containerregistry

Go library and CLIs for working with container registries (by google)

official-images

Primary source of truth for the Docker "Official Images" program (by docker-library)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
go-containerregistry official-images
17 14
2,962 6,271
1.2% 0.6%
6.8 10.0
6 days ago 5 days ago
Go Shell
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

go-containerregistry

Posts with mentions or reviews of go-containerregistry. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-23.
  • A gopher’s journey to the center of container images
    5 projects | dev.to | 23 Nov 2023
    I also explored another module, go-containerregistry, in order to build images without root privileges. The approach is completely different, and we can manipulate each component of the container image separately. This can present an advantage, if you're looking for a way to fine tune things.
  • Skip build if "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}" exists on container registry
    3 projects | /r/gitlab | 24 Apr 2023
    Use crane ls in a different job to check the tags in the registry. Create an artifact from its output that you evaluate in your kaniko job to check if the build should run or not.
  • Docker: We’re No Longer Sunsetting the Free Team Plan
    3 projects | news.ycombinator.com | 24 Mar 2023
    Multi-arch builds are easy to "transfer" IMHO

    crane cp docker.io/openfaas/gateway:0.10.0 ghcr.io/openfaas/gateway:0.10.0

    If you've not used it yet - do take a look. Crane doesn't pull the images into a local Docker library for re-tagging and re-pushing.

    https://github.com/google/go-containerregistry/blob/main/cmd...

  • Weekly: This Week I Learned (TWIL?) thread
    1 project | /r/kubernetes | 23 Mar 2023
    crane - tool to copy images from one repo to another - https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md
  • Dockerhub to (likely?) delete a lot of organizations.
    2 projects | /r/DataHoarder | 15 Mar 2023
  • FYI: Docker is deleting Open Source organisations
    9 projects | /r/selfhosted | 15 Mar 2023
    pretty sure the crane being referred by alex is this one: https://github.com/google/go-containerregistry/tree/main/cmd/crane
  • Docker's deleting Open Source images and here's what you need to know
    23 projects | news.ycombinator.com | 15 Mar 2023
    https://github.com/google/go-containerregistry/tree/main/cmd...

    It was recommended in this article:

  • Crafting container images without Dockerfiles
    20 projects | news.ycombinator.com | 6 Feb 2023
    This is one of my absolute favorite topics. Pardon me while I rant and self-promote :D

    Dockerfiles are great for flexibility, and have been a critical contributor to the adoption of Docker containers. It's very easy to take a base image, add a thing to it, and publish your version.

    Unfortunately Dockerfiles are also full of gotchas and opaque cargo-culted best practices to avoid them. Being an open-ended execution environment, it's basically impossible to tell even during the build what's being added to the image, which has downstream implications for anybody trying to get an SBOM from the image for example.

    Instead, I contribute to a number of tools to build and manage images without Dockerfiles. Each of them are less featureful than Dockerfiles, but being more constrained in what they can do, you can get a lot more visibility into what they're doing, since they're not able to do "whatever the user wants".

    1. https://github.com/google/go-containerregistry is a Go module to interact with images in the registry and in tarballs and layouts, in the local docker daemon. You can append layers, squash layers, modify metadata, etc.

    2. crane is a CLI that uses the above (in the same repo) to make many of the same modifications from the commandline. `crane append` for instance adds a layer containing some contents to an image, entirely in the registry, without even pulling the base image.

    3. ko (https://ko.build) is a tool to build Go applications into images without Dockerfiles or Docker at all. It runs `go build`, appends that binary on top of a base image, and pushes it directly to the registry. It generates an SBOM declaring what Go modules went into the app it put into the image, since that's all it can do.

    4. apko (https://apko.dev) is a tool to assemble an image from pre-built apks, without Docker. It's capable of producing "distroless" images easily with config in YAML. It generates an SBOM declaring exactly what apks it put in the image, since that's all it can do.

    Bazel's rules_docker is another contender in the space, and GCP's distroless images use it to place Debian .debs into an image. Apko is its spiritual successor, and uses YAML instead of Bazel's own config language, which makes it a lot easier to adopt and use (IMO), with all of the same benefits.

    I'm excited to see more folks realizing that Dockerfiles aren't always necessary, and can sometimes make your life harder. I'm extra excited to see more tools and tutorials digging into the details of how container images work, and preaching the gospel that they can be built and modified using existing tooling and relatively simple libraries. Excellent article!

  • ImagePullPolicy: IfNotPresent - (image doesn’t exist in repo) - Is it possible to pull the micro service image from an EKS node and then push to repo?
    3 projects | /r/kubernetes | 13 Sep 2022
    Look at using tools like skopeo or crane
  • Containerd... Do I use Docker to build the container image? I miss the Docker Shim
    5 projects | /r/kubernetes | 25 Jun 2022
    Pretty much any tool works: docker, podman, kaniko, crane(if you're brave), ko... list goes on.

official-images

Posts with mentions or reviews of official-images. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-15.
  • Nix is a better Docker image builder than Docker's image builder
    21 projects | news.ycombinator.com | 15 Mar 2024
    Ubuntu now has snapshot.ubuntu.com, see https://ubuntu.com/blog/ubuntu-snapshots-on-azure-ensuring-p...

    Related discussion about reproducible builds by the Docker people: https://github.com/docker-library/official-images/issues/160...

  • Starter for Jakarta EE staged (beta)
    2 projects | /r/java | 29 Mar 2023
  • How to own your own Docker Registry address
    5 projects | news.ycombinator.com | 17 Mar 2023
    > In their updated policy, it appears they now won't remove any existing images, but projects who don't pay up will not be able to publish any new images

    This is not correct. It's the "organization" features are going away. That is the feature which lets you create teams, add other users to those teams, and grant teams access to push images and access private repositories. Multiple maintainers can still collaborate on publishing new images through use of access tokens which grant access to publish those images. It's kind of a hack, but it works. You would typically use these access tokens with automated CI tools anyway. This will require converting the organization account to a personal user (non-org) account. (Interesting note/disclosure: I was the engineer who first implemented the feature of converting a personal user account into an organization account some time around 2014/2015, but I no longer work there.)

    For open source projects which are not part of the Docker Official Images (the "library" images [1]), they announced that such projects can apply to the Docker-Sponsored Open Source Program [2].

    I would also heed the warning from the author of this article:

    > Self-hosting a registry is not free, and it's more work than it sounds: it's a proper piece of infrastructure, and comes with all the obligations that implies, from monitoring to promptly applying security updates to load & disk-space management. Nobody (let alone tiny projects like these) wants this job.

    Having most container images hosted by a handful of centralized registries has its problems, as noted, but so does an alternative scenario where multiple projects which decided to go self-hosted eventually lack the resources to continue doing so for their legacy users. Though, I suppose the nice thing about container images is that you can always pull and push them somewhere else to keep around indefinitely.

    [1] https://hub.docker.com/u/library

  • Docker's deleting Open Source images and here's what you need to know
    23 projects | news.ycombinator.com | 15 Mar 2023
    Indeed. While I do maintain two of them, that maintenance is effectively equivalent to being an open source maintainer or open source contributor. I do not have any non-public knowledge about the Docker Official Images program. My interaction with the Docker Official Images program can be summed up as “my PRs to docker-library/official-images” (https://github.com/docker-library/official-images/pulls/TimW...) and the #docker-library IRC channel on Libera.Chat.
  • Oracle per-employee Java pricing causes concern
    3 projects | news.ycombinator.com | 28 Jan 2023
    "AdoptOpenJDK up until now was producing OpenJDK binaries with both Hotspot and OpenJ9 VM's. With Adopt's move to Eclipse, legal restrictions prevent the new Eclipse Adoptium group from producing/releasing OpenJ9 based binaries. As a result, IBM will be producing OpenJ9 based binaries in 2 flavours, Open and Certified, both under the family name IBM Semeru Runtimes. Essentially the same binaries, released under different licenses."

    Source: https://github.com/docker-library/official-images/pull/10666...

  • PHP 8.2.0 has been released!
    2 projects | /r/PHP | 8 Dec 2022
    They should be available soon, the corresponding PR at docker-library/official-images has already been merged: https://github.com/docker-library/official-images/pull/13693
  • Docker series (Part 8): Images from Docker Hub
    2 projects | dev.to | 9 Jun 2022
    Official image lists are added here: https://github.com/docker-library/official-images/tree/master/library
  • GCC 12.1 Released
    2 projects | /r/programming | 6 May 2022
    Looks like this PR will release the official version to the hub: https://github.com/docker-library/official-images/pull/12382
  • 1 Million Docker pulls and more container updates
    1 project | /r/AlmaLinux | 15 Mar 2022
    We’ve also officially release containers for ppc64le available on all the major registries and we’ve also gone ahead and updated our containers to 8.5.4 and patched against the latest security updates where applicable. 18 packages have been updated and you can see that work here.
  • Where are the 10.7.2/10.7.3 docker images?
    1 project | /r/mariadb | 16 Feb 2022

What are some alternatives?

When comparing go-containerregistry and official-images you can also consider the following projects:

skopeo - Work with remote images registries - retrieving information, images, signing content

buildx - Docker CLI plugin for extended build capabilities with BuildKit

regclient - Docker and OCI Registry Client in Go and tooling using those libraries.

gcc - Docker Official Image packaging for gcc

container-diff - container-diff: Diff your Docker containers

registry.k8s.io - This project is the repo for registry.k8s.io, the production OCI registry service for Kubernetes' container image artifacts

image-spec - OCI Image Format

backend

gcr-cleaner - Delete untagged image refs in Google Container Registry or Artifact Registry

nerdctl - contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ...

docker-tools - This is a repo to house some common tools for our various docker repos.

4.2BSD - Upload of the source of 4.2BSD taken from /usr/src