Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ECR Public] [request]: cross-repository blob mounts failing? #1459

Open
tianon opened this issue Jul 29, 2021 · 4 comments
Open

[ECR Public] [request]: cross-repository blob mounts failing? #1459

tianon opened this issue Jul 29, 2021 · 4 comments
Labels
ECR Public Amazon Elastic Container Registry Public Proposed Community submitted issue

Comments

@tianon
Copy link

tianon commented Jul 29, 2021

Community Note

  • Please vote on this issue by adding a 馃憤 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Tell us about your request
I filed an issue on @estesp's manifest-tool at estesp/manifest-tool#124, but in testing further, even docker manifest fails to successfully create the cross-repository manifest lists, so I believe this is something deeper.

As seen in my latest comment there, the short version is that:

docker manifest create public.ecr.aws/debian/debian:bullseye public.ecr.aws/debian/amd64:bullseye public.ecr.aws/debian/armel:bullseye public.ecr.aws/debian/armhf:bullseye public.ecr.aws/debian/arm64:bullseye public.ecr.aws/debian/i386:bullseye public.ecr.aws/debian/mips64el:bullseye public.ecr.aws/debian/ppc64el:bullseye public.ecr.aws/debian/s390x:bullseye

followed by:

docker manifest push public.ecr.aws/debian/debian:bullseye

leads to:

error mounting debian/amd64@sha256:4c0bfd2a9f4e90b5a07958f07d71b2e2ea5a965649c92bf35822aece72a29c6b to public.ecr.aws/debian/debian:bullseye

Which service(s) is this request for?
ECR Public

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
At a high level, I have per-architecture images pushed to each of public.ecr.aws/debian/amd64, public.ecr.aws/debian/armel, etc, and I want to push the combined manifest lists to public.ecr.aws/debian/debian. Functionally, this means the clients creating the manifest list have to do cross-repository blob mounts, but for some reason that doesn't seem to be working properly in any of the three tools I've tested (which I use to do exactly this successfully against other registries).

Are you currently working around this issue?
I was hoping docker manifest would be my workaround, but it looks like I'm going to have to go as far as using containerd to do push-by-digest of all the per-arch images instead. 馃槥

cc @samuelkarp

@tianon tianon added the Proposed Community submitted issue label Jul 29, 2021
@samuelkarp samuelkarp added the ECR Amazon Elastic Container Registry label Jul 29, 2021
@estesp
Copy link

estesp commented Jul 29, 2021

Thanks for opening this @tianon. If that's the root cause, I'm curious if a tag-based multi-arch assembly would be a short-term workaround (maybe not helpful for your use case, but would enable existing tools in the short term)? If all the images are in the same repo (e.g. "target_name:version_tag") then all the member images could be pushed as target_name:archstring_version getting around the need for a blob mount.

@tianon
Copy link
Author

tianon commented Jul 29, 2021

Yeah, that's doable, but not really less work than doing the push-by-digest solution (and leaves the extra tags hanging around unless I clean them up after). 馃槄

I'm sure if I take each image manifest and do a direct push-by-digest via ctr instead of a cross-repository mount it'd likely work, but I need to do more testing around that to be sure (that's probably my next project on this, although not sure how soon I'll get around to testing it 馃檲).

FWIW, @samuelkarp was able to reproduce too:

$ docker manifest create public.ecr.aws/xxx/test:tianon  public.ecr.aws/debian/amd64:bullseye public.ecr.aws/debian/arm64:bullseye
Created manifest list public.ecr.aws/xxx/test:tianon
$ docker manifest push public.ecr.aws/xxx/test:tianon
error mounting debian/amd64@sha256:4c0bfd2a9f4e90b5a07958f07d71b2e2ea5a965649c92bf35822aece72a29c6b to public.ecr.aws/xxx/test:tianon

@tianon
Copy link
Author

tianon commented Jul 30, 2021

Got around to it sooner than I expected -- can confirm that pushing all the manifests by-digest to public.ecr.aws/debian/debian made manifest-tool work (although docker manifest still complains about not being able to mount -- I guess manifest-tool is more forgiving?).

@saleemmx saleemmx added ECR Public Amazon Elastic Container Registry Public and removed ECR Amazon Elastic Container Registry labels Mar 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ECR Public Amazon Elastic Container Registry Public Proposed Community submitted issue
Projects
None yet
Development

No branches or pull requests

5 participants