Handle multi-arch Docker images on GitHub Package Registry

I would love for GitHub Package Registry to handle multi-arch Docker images like DockerHub or GCR! :heart:

I have tried through GitHub Actions but failed with the famous 406 Not Acceptable.
As you can see this is okay while pushing to docker.io as logs stipulated (marked done at the end). In fact buildx can’t push the following tags/manifests on docker.pkg.github.com and failed with this 406 error.

This issue occurs because the GitHub Package Registry cannot handle Manifest v2 schema 2.
If you can add this implementation that would be awesome!! :pray:

26 Likes

This also appears to prevent being able to store from cache manifests from Docker BuildKit (which could be an ideal way to add caching to docker image builds in GHA).

7 Likes

Hey @crazy-max,

Thanks for the feedback! I’ve taken your suggestion and passed it along to the appropriate teams. Thanks again for reaching out :grinning:

2 Likes

Can’t wait to see this implemented :fire::boom:

@andreagriffiths11 can you please append this information to https://help.github.com/en/articles/configuring-docker-for-use-with-github-package-registry ? 

Or make a note somewhere that you do not currently support Docker Registry Manifests?

Most image creators Multi Arch now, this is not a corner case functionality and the Docker client automatically pulling the correct image for the users arch is extremely useful.  

4 Likes

Any ETA for this feature? Really need it since the early disruption on Docker Hub :smirk:

4 Likes

I would also love to see this feature implemented.

GitHub Actions are significantly more efficient that DockerHub autobuild, I would like to migrate my all build processes from DockerHub to GitHub, along with GitHub package registry, but the multi-arch feature is blocking for me.

Regards,

Edouard

2 Likes

@andreagriffiths11 I’m getting errors pushing my multi-arch docker image to the GitHub registry and have only just found this thread to see it’s not supported - would be great if the docs could include this somewhere :smiley:

Also, is there an ETA or Issue raised that I can follow anywhere? 

1 Like

Hi @edouardberthe, @crazy-max, @jamesbroadberry,

Does anyone have a public repository with a multi-arch image that I could use for testing? :pray:

Ideally I’d like to see it failing when being published to the GitHub registry.

Thanks!
Jamie.

Hi @jcansdale.

Here is a simple one: https://github.com/crazy-max/docker-7zip

And another one for a Golang app: https://github.com/crazy-max/diun

@crazy-max,

This is very useful, thank-you!

I’ve been paying with your docker-7zip project and there’s something that confuses me. When I look at your page here, there are a bunch of digest SHAs (one for each OS/arch):
https://hub.docker.com/r/crazymax/7zip/tags

I expected that only one of them would be runnable using Docker for Mac. But it appears I can take the linux/arm/v7 manifest (or any other):
https://hub.docker.com/layers/crazymax/7zip/latest/images/sha256-fde92e01f1e7b76cabac42ac1d9e8a2d54734446fb08d5b573b457ed2b93b1fe?context=explore

…and run it like this:

$ docker run crazymax/7zip@sha256:fde92e01f1e7b76cabac42ac1d9e8a2d54734446fb08d5b573b457ed2b93b1fe

7-Zip (a) [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,32 bits,8 CPUs LE)

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
       [<@listfiles...>]

What I don’t understand is how it gets from the arch-specific linux/arm/v7 manifest to one that Docker can run. Maybe Docker for Mac can run linux/arm/v7? There must be something about how it works that I’m not understanding!

Do you know how it works?

1 Like

@jcansdale

What I don’t understand is how it gets from the arch-specific linux/arm/v7 manifest to one that Docker can run. Maybe Docker for Mac can run linux/arm/v7 ? There must be something about how it works that I’m not understanding!

Yes this is expected on MacOS. More info at the end of this page: https://docs.docker.com/docker-for-mac/multi-arch/

@crazy-max,

Wow, I wasn’t expecting that. Thanks for the link!

Any chance you could open a ticket using the following link so I can share what I’ve been experimenting with? Please also let me know if you’re okay to be under NDA.

https://support.github.com/contact

Just make the subject the same as this thread and mention jcansdale!

Any chance you could open a ticket using the following link so I can share what I’ve been experimenting with? Please also let me know if you’re okay to be under NDA.

Done!

This is really needed… Any ETA?