-
Notifications
You must be signed in to change notification settings - Fork 18.9k
Add multi-arch image support for ARM #36121
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
Conversation
|
@Pennyzct Can you address the format issues: |
85e8bf2 to
04cfdae
Compare
|
07:41:31 FAIL: docker_cli_logs_test.go:145: DockerSuite.TestLogsSince |
|
This is definitely an improvement for the ARM variants matching, but it still leaves the case where the hardware could run an image, but an exact variant match doesn't exist (e.g. hardware = v8, image = v7 (and there is no v8 variant in the registry for the image). I guess we could potentially see this as a stepwise improvement, and add the "order of compatibility" list as a follow-on? |
|
IMO that depends on the failure mode -- today, a user of 32bit ARM on a v8 machine will be (successfully) running the first image listed, which will likely be v5 or v6 (or even v7). If this PR turns their current successful usage into a failure mode, then I think we need to revisit the "order of compatibility" more urgently. |
distribution/pull_v2_unix.go
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This uses an exact match on variant with no fallback, so the failure mode here will be that images which run successfully today (although likely in a less-than-ideal way) will start failing to run with "manifest not found" errors.
|
Sorry for the delay, we were in CNY holidays🙂. We think that it is reasonable and feasible to add failure mode to complement variant matching. So, does all we reach a consensus that failure mode should be included? if so, we will do the coding asap😀. @tianon @thaJeztah @estesp @stevvooe @dmcgowan @Weichen81 @arm64b |
dfebb72 to
190bccb
Compare
Codecov Report
@@ Coverage Diff @@
## master #36121 +/- ##
=========================================
Coverage ? 35.26%
=========================================
Files ? 615
Lines ? 45832
Branches ? 0
=========================================
Hits ? 16164
Misses ? 27524
Partials ? 2144 |
|
Hi~ all😁. After internal discussion, the failure mode of variant matching should include two vectors(aka. order of compatibility). one for arm32, and the other for arm64. fallback scheme would simply be backward compatibility, which would be v7 -> v6 ->v5 in arm32 and only v8 in arm64 for now. @arm64b @Weichen81 @estesp @tianon @thaJeztah |
|
@Pennyzct fallback on a v7 node to v6 and then v5 (and on a v6 node to just v5, and on v5 just erroring out if not available) sounds like exactly what we need IMO |
arm64b
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
Hi~ all. Any comments about the original code structure? Then I will rebase the code asap.😁 @tianon @thaJeztah @estesp @stevvooe |
d9c56cc to
d8cb58f
Compare
When pulling multi-arch image from official repo, mismatched arch variant may be pulled,because only arch and os will be verified currently. Failure mode strategy requires that compatibile image can be pulled by following the order of compatibility. Relevant issue has already been raised by issue moby#34875. Signed-off-by: Penny Zheng <[email protected]>
|
FWIW this fix does not address the Raspberry Pi case as the "Zero" has an ARMv6 chip but reports a CPU arch of 7! |
|
Hi @AmedeeBulle , But this doesn't mean this CPU is compatible with armv7 instruction set. In this case, most armv7 distributions will stuck on Raspberry Pi Zero. |
|
@Weichen81, that's exactly my point: I want to be able to differentiate V6 (Raspberry Pi Zero) vs. V7 (Raspberry Pi 3B), and if we use |
|
@AmedeeBulle |
|
Yes indeed. |
|
What's the status here? |
|
@Pennyzct this one needs to be rebased |
|
Hi~For now, the |
|
@Pennyzct The code in question has changed and now uses the containerd matchers. Can you check if there are still issues for you and update the PR if necessary. |
|
ping @Pennyzct do you have time to work on #36121 (comment) ? also /cc @pricec @michael2012z @adamparco |
|
Hitting on this issue as well. I have an image with both |
You clearly mean to say, here: "or just an armv6 with VMSAv7". |
When pulling multi-arch image from official repo, mismatch variant may be pulled,
due to for now only arch and os will be verified. Relevant issue has
already been raised in github (#34875).
Not long ago, I worked with wei @Weichen81 on multi-arch image support in containerd, and the relevant code has already be merged🙂(containerd/containerd#1575). I reused logic and code from that and modified some based on docker infrastructure.
@arm64b