New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARMv6 machine pulls v7 image from manifest list #37647
Comments
Related discussion #34875 |
Does anyone have a workaround? |
@nunofgs : a workaround for 'official images' (see https://github.com/docker-library/official-images#architectures-other-than-amd64) like httpd is to prefix the image name with the 'architecture id'. In this case, "arm32v5". So, "docker run -it --rm httpd:2.4.43 uname -m" will fail, but "docker run -it --rm arm32v5/httpd:2.4.43 uname -m" will return "armv6l" on a raspberry pi one. |
This was fixed in containerd/containerd#4530, which got pulled in here in #41688, and was officially released in v20.10.0. 👍 |
All releases of Raspberry Pi OS provide a buggy Docker runtime [1] which always pulls Docker images for ARMv7 CPUs instead of ARMv6 CPUs even on Raspberry Pi's with ARM1176JZF-S cores such as Raspberry Pi Zero and Raspberry Pi 1 Model B(+). As a workaround, Docker packages are installed from Docker Inc.'s upstream repositories instead of Raspberry Pi OS's repositories on affected systems. Ref.: [1] moby/moby#37647 [2] pi-hole/docker-pi-hole#245
Description
If I pull a multi-platform image e.g. httpd:2.1.34 with a Raspberry Pi Zero (ARMv6 CPU) it pulls the v7 image it can't execute, even though there is a v5 image in the manifest list.
I've made a few manifest lists with different
variant
fields in a private registry and found that the Pi with v6 and one with v7 always pulled the same images.Here are the results of my tests. The first colum shows the variant field of the first image in the manifest list, the first row shows the variant field of the second image (nV for a missing variant field).
The values show, which image was actually pulled (always the same on both ARMv6 and ARMv7).
I think this result is a bit strange, because it seems like the order of the manifest list makes a difference. But that might be an other issue.
Steps to reproduce the issue:
curl -sSL get.docker.com | sh
docker run httpd:2.1.34
It pulls the v7 Image instead of v5 and fails to execute it
Additional information you deem important (e.g. issue happens only occasionally):
Manifest list of
httpd:2.1.34
:Output of
docker version Raspberry Pi Zero
:Output of
docker info Raspberry Pi Zero
:The text was updated successfully, but these errors were encountered: