It's not currently obvious from reading the spec that manifests should be persisted in the exact wire format provided by the client, leading to errors if a registry re-formats the manifest.
This code in containerd validates the Docker-Content-Digest header after a manifest push, and will throw if they don't match:
See discussion at: https://github.com/moby/buildkit/issues/2963
It's not currently obvious from reading the spec that manifests should be persisted in the exact wire format provided by the client, leading to errors if a registry re-formats the manifest.
This code in containerd validates the
Docker-Content-Digest
header after a manifest push, and will throw if they don't match:https://github.com/moby/buildkit/blob/874eef9b70dbaf4f074d2bc8f4dc64237f8e83a0/vendor/github.com/containerd/containerd/remotes/docker/pusher.go#L418-L425