容器服务ACK /manifests-tools工具构建多架构镜像上传ACR 时候, inspect字段里 ""ManifestType": "application/vnd.oci.image.manifest.v1+json", 提示 unsupported manifest format ,是需要 "mediaType": "application/vnd.docker.distribution.manifest.v2+json"吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 manifests-tools
工具构建多架构镜像并上传到阿里云容器镜像服务(ACR)时,如果遇到错误提示 "ManifestType": "application/vnd.oci.image.manifest.v1 json"
并显示 unsupported manifest format
,这通常是因为 ACR 当前对多架构镜像的 Manifest 格式支持有限,可能不兼容 OCI 标准的 Manifest 格式。
根据知识库中的信息,阿里云容器镜像服务(ACR)支持通过 docker manifest
工具创建和推送多架构镜像。而 docker manifest
默认生成的 Manifest 格式为 Docker 的标准格式,即:
"mediaType": "application/vnd.docker.distribution.manifest.v2+json"
而您提到的错误提示表明当前使用的工具生成的是 OCI 标准的 Manifest 格式:
"ManifestType": "application/vnd.oci.image.manifest.v1+json"
这可能是由于 manifests-tools
工具默认生成 OCI 格式的 Manifest,而 ACR 对此格式的支持可能存在限制。
为了确保多架构镜像能够成功上传到 ACR,建议按照以下步骤操作:
docker manifest
工具替代 manifests-tools
推荐使用 docker manifest
工具来创建和推送多架构镜像,因为 ACR 明确支持该工具生成的格式。以下是具体操作步骤:
前提条件:
docker login --username=<your-username> <acr-registry-domain>
步骤:
为每个架构构建单架构镜像并推送到 ACR。例如:
docker buildx build . -t <acr-registry-domain>/<namespace>/<image>:<arch> --platform <platform> --push
示例:
docker buildx build . -t acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:arm64 --platform linux/arm64 --push
docker buildx build . -t acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:amd64 --platform linux/amd64 --push
创建多架构镜像的 Manifest List:
docker manifest create <acr-registry-domain>/<namespace>/<image>:<tag> \
<acr-registry-domain>/<namespace>/<image>:<arch1> \
<acr-registry-domain>/<namespace>/<image>:<arch2>
示例:
docker manifest create acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:multi \
acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:arm64 \
acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:amd64
推送 Manifest List 到 ACR:
docker manifest push <acr-registry-domain>/<namespace>/<image>:<tag>
示例:
docker manifest push acr-test-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:multi
如果您必须使用 manifests-tools
工具,请确保生成的 Manifest 格式符合 ACR 的要求。可以通过以下方式检查和调整:
检查 Manifest 格式: 使用 docker manifest inspect
命令查看生成的 Manifest 内容,确认其 mediaType
是否为:
"mediaType": "application/vnd.docker.distribution.manifest.v2+json"
调整工具配置: 如果 manifests-tools
支持指定输出格式,请将其配置为生成 Docker 标准格式的 Manifest。
如果上述方法仍无法解决问题,建议联系阿里云技术支持团队,提供具体的错误日志和操作步骤,以便进一步排查问题。
docker manifest
工具。通过以上步骤,您可以有效解决 unsupported manifest format
的问题,并成功将多架构镜像上传到 ACR。