旧版本Docker拉取Docker Hub镜像提示“未找到”问题咨询
问题分析与解决办法
这是已知的兼容性问题,核心原因是:
新版Docker buildx默认生成并推送OCI格式的镜像清单,而Docker 17.06.1-ce这类旧版本仅支持Docker V2 Schema 2格式的清单——尽管两者都基于Registry V2 API,但清单格式不兼容,导致旧Docker无法识别OCI格式的镜像元数据,从而抛出manifest not found错误。
解决办法
方法1:推送兼容旧Docker的镜像格式
在使用buildx构建并推送镜像时,显式指定输出为Docker V2 Schema 2格式:
docker buildx build --push --platform linux/amd64 --output type=docker,name=docker.io/wodby/mariadb:10.3-3.24.0 .
该参数会强制生成旧Docker能识别的清单格式,推送后旧服务器即可正常拉取。
方法2:升级Docker版本
将服务器上的Docker升级到18.06.0-ce及以上版本,这个版本开始原生支持OCI格式的镜像清单,彻底解决此类兼容问题。
验证方式(可选)
在新版Docker环境中执行以下命令查看镜像清单类型:
docker manifest inspect wodby/mariadb:10.3-3.24.0
若输出中mediaType字段为application/vnd.oci.image.index.v1+json,则说明是OCI格式,旧Docker无法识别;若为application/vnd.docker.distribution.manifest.list.v2+json,则是Docker V2 Schema 2格式,旧Docker可正常拉取。
内容的提问来源于stack exchange,提问作者chingis
相关产品推荐
相关产品推荐

