2023-11: Docker and OSS

What happened

Docker sent an email to any Docker Hub organization with a “Free Team” subscriptions, which alarmed the open source community.

In a nutshell, they wrote that their account will be deleted including all images, if they do not upgrade to a paid team plan.

Let me say that this kind of communication is frightening to say the least.

What kind of problems does such communication entail?

  • Paid team plans cost.
  • Many open source projects have a considerable archive of images.
  • Docker is coming across as hostile with these behaviors1 and losing the trust of users.

Docker like others began as an open project, but now that it is a company with sky-high earnings it seems to have forgotten that.

The twist

After some backslash from all over the Internet, Docker has apologized, but in my opinion the excuse does not wipe out the blame.

I’d like to publish public images, now what?

My first advice would be to use a private infrastructure you own and maintain, but this can be challenging or impossible…

GitHub

GitHub’s Container Registry offers free storage for public images, the registry currently supports the following container image formats:

  • Docker Image Manifest V2, Schema 2
  • Open Container Initiative (OCI) Specifications

:loudspeaker: Microsoft owns GitHub.

Quay.io

Quay.io is a registry for storing and building container images as well as distributing other OCI artifacts. The service is free for those who want to set up their own public repositories and available for a fee, if you want to create private repositories.

:loudspeaker: RedHat owns Quay.io.

I want to copy/move all my images to a new registry

Sure thing, there are many tools to do accomplish this task:

crane is a command-line tool for interacting with remote images and registries.

The following commands copy an image to our destination registry. With crane we can use:

# List all image tags
crane ls docker.io/library/my-image
...
# For each image tag copy (all platforms) to destination
crane copy docker.io/library/my-image:1.23 \
           quay.io/library/my-image:1.23

Or you can use a tool like Harbor that can replicate resources between Harbor and non-Harbor registries, in both pull or push mode.

  1. They also rate-limit pulls of public open-source images! Not good, indeed. :biohazard: 

Comments