buildx: Error 400 on push to quay.io
I’ve been working on pushing multi-platform images to docker.io and quay.io. When I added quay.io, I started seeing 400 errors:
Here is the buildkitd log:
2020-05-28T06:32:09.8754265Z time="2020-05-28T06:32:09Z" level=debug msg="checking and pushing to" digest="sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f" mediatype=application/vnd.docker.distribution.manifest.v2+json size=520 url="https://quay.io/v2/***/cilium-iproute2/manifests/044e7a6a43d5a42a8ce696535b3dbf773f82dbec"
2020-05-28T06:32:09.8755224Z time="2020-05-28T06:32:09Z" level=debug msg="do request" digest="sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.accept="application/vnd.docker.distribution.manifest.v2+json, */*" request.header.user-agent=containerd/1.3.0+unknown request.method=HEAD size=520 url="https://quay.io/v2/***/cilium-iproute2/manifests/044e7a6a43d5a42a8ce696535b3dbf773f82dbec"
2020-05-28T06:32:09.8756297Z time="2020-05-28T06:32:09Z" level=debug msg="fetch response received" digest="sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=82 response.header.content-type=application/json response.header.date="Thu, 28 May 2020 06:32:09 GMT" response.header.server=nginx/1.12.1 response.status="404 NOT FOUND" size=520 url="https://quay.io/v2/***/cilium-iproute2/manifests/044e7a6a43d5a42a8ce696535b3dbf773f82dbec"
2020-05-28T06:32:09.8757297Z time="2020-05-28T06:32:09Z" level=debug msg="do request" digest="sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.content-type=application/vnd.docker.distribution.manifest.v2+json request.header.user-agent=containerd/1.3.0+unknown request.method=PUT size=520 url="https://quay.io/v2/***/cilium-iproute2/manifests/044e7a6a43d5a42a8ce696535b3dbf773f82dbec"
2020-05-28T06:32:09.8758360Z time="2020-05-28T06:32:09Z" level=debug msg="fetch response received" digest="sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=977 response.header.content-type=application/json response.header.date="Thu, 28 May 2020 06:32:09 GMT" response.header.server=nginx/1.12.1 response.status="400 BAD REQUEST" size=520 url="https://quay.io/v2/***/cilium-iproute2/manifests/044e7a6a43d5a42a8ce696535b3dbf773f82dbec"
2020-05-28T06:32:09.8763812Z time="2020-05-28T06:32:09Z" level=error msg="/moby.buildkit.v1.Control/Solve returned error: unexpected status: 400 BAD REQUEST\ngithub.com/containerd/containerd/remotes/docker.(*pushWriter).Commit\n\t/src/vendor/github.com/containerd/containerd/remotes/docker/pusher.go:347\ngithub.com/containerd/containerd/content.Copy\n\t/src/vendor/github.com/containerd/containerd/content/helpers.go:151\ngithub.com/containerd/containerd/remotes.push\n\t/src/vendor/github.com/containerd/containerd/remotes/handlers.go:171\ngithub.com/containerd/containerd/remotes.PushHandler.func1\n\t/src/vendor/github.com/containerd/containerd/remotes/handlers.go:146\ngithub.com/moby/buildkit/util/push.Push\n\t/src/util/push/push.go:102\ngithub.com/moby/buildkit/exporter/containerimage.(*imageExporterInstance).Export\n\t/src/exporter/containerimage/export.go:240\ngithub.com/moby/buildkit/solver/llbsolver.(*Solver).Solve.func3\n\t/src/solver/llbsolver/solver.go:218\ngithub.com/moby/buildkit/solver/llbsolver.inVertexContext\n\t/src/solver/llbsolver/solver.go:359\ngithub.com/moby/buildkit/solver/llbsolver.(*Solver).Solve\n\t/src/solver/llbsolver/solver.go:217\ngithub.com/moby/buildkit/control.(*Controller).Solve\n\t/src/control/control.go:276\ngithub.com/moby/buildkit/api/services/control._Control_Solve_Handler.func1\n\t/src/api/services/control/control.pb.go:1489\ngithub.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1\n\t/src/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc/server.go:57\nmain.unaryInterceptor.func1\n\t/src/cmd/buildkitd/main.go:531\ngithub.com/moby/buildkit/api/services/control._Control_Solve_Handler\n\t/src/api/services/control/control.pb.go:1491\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/src/vendor/google.golang.org/grpc/server.go:1024\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/src/vendor/google.golang.org/grpc/server.go:1313\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.1\n\t/src/vendor/google.golang.org/grpc/server.go:722\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357\nfailed commit on ref \"manifest-sha256:8b1c663eb113fcad99df5234a5e91d70ff34713be5b825ddc5e781e1fec8aa3f\"\ngithub.com/containerd/containerd/content.Copy\n\t/src/vendor/github.com/containerd/containerd/content/helpers.go:153\ngithub.com/containerd/containerd/remotes.push\n\t/src/vendor/github.com/containerd/containerd/remotes/handlers.go:171\ngithub.com/containerd/containerd/remotes.PushHandler.func1\n\t/src/vendor/github.com/containerd/containerd/remotes/handlers.go:146\ngithub.com/moby/buildkit/util/push.Push\n\t/src/util/push/push.go:102\ngithub.com/moby/buildkit/exporter/containerimage.(*imageExporterInstance).Export\n\t/src/exporter/containerimage/export.go:240\ngithub.com/moby/buildkit/solver/llbsolver.(*Solver).Solve.func3\n\t/src/solver/llbsolver/solver.go:218\ngithub.com/moby/buildkit/solver/llbsolver.inVertexContext\n\t/src/solver/llbsolver/solver.go:359\ngithub.com/moby/buildkit/solver/llbsolver.(*Solver).Solve\n\t/src/solver/llbsolver/solver.go:217\ngithub.com/moby/buildkit/control.(*Controller).Solve\n\t/src/control/control.go:276\ngithub.com/moby/buildkit/api/services/control._Control_Solve_Handler.func1\n\t/src/api/services/control/control.pb.go:1489\ngithub.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1\n\t/src/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc/server.go:57\nmain.unaryInterceptor.func1\n\t/src/cmd/buildkitd/main.go:531\ngithub.com/moby/buildkit/api/services/control._Control_Solve_Handler\n\t/src/api/services/control/control.pb.go:1491\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/src/vendor/google.golang.org/grpc/server.go:1024\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/src/vendor/google.golang.org/grpc/server.go:1313\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.1\n\t/src/vendor/google.golang.org/grpc/server.go:722\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357"
2020-05-28T06:32:09.8765769Z time="2020-05-28T06:32:09Z" level=debug msg="session finished: <nil>"
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 16 (16 by maintainers)
Commits related to this issue
- Remove layer mediatypes workaround Dummy layer with an empty file was added to work around quay.io refusing to accept mixed OCI and Docker meditypes. References: - https://github.com/docker/buildx/i... — committed to cilium/image-tools by errordeveloper 4 years ago
- Remove layer mediatypes workaround Dummy layer with an empty file was added to work around quay.io refusing to accept mixed OCI and Docker meditypes. References: - https://github.com/docker/buildx/i... — committed to cilium/image-tools by errordeveloper 4 years ago
- Remove layer mediatypes workaround Dummy layer with an empty file was added to work around quay.io refusing to accept mixed OCI and Docker meditypes. References: - https://github.com/docker/buildx/i... — committed to cilium/image-tools by errordeveloper 4 years ago
- Remove layer mediatypes workaround Dummy layer with an empty file was added to work around quay.io refusing to accept mixed OCI and Docker meditypes. References: - https://github.com/docker/buildx/i... — committed to cilium/image-tools by errordeveloper 4 years ago
- Remove layer mediatypes workaround from all images This is a follow-up to d121f9b90bc852509d8c040683bcda3724d70ec5, where some of the images were updated, but not all. This commit removes remaining i... — committed to cilium/image-tools by errordeveloper 3 years ago
Indeed it looks like we are defaulting to oci mediatypes for type=image/oci and docker for type=docker. Not sure if this was completely intentional. So you should set
oci-mediatypes=falsefor quay if it doesn’t support oci. https://github.com/moby/buildkit/blob/master/exporter/containerimage/export.go#L116