docker push 失败:清单无效

Sai*_*tty 13 docker dockerfile docker-registry

尝试对docker push <IMAGE>私有 Docker 映像注册表执行操作时,收到错误提示清单无效

随着错误,它给出 some [DEPRECATION NOTICE],这也可能是失败的原因。

注意:在收到此错误并且docker push命令失败后。(ci/cd因为它没有完成这项工作,我猜它正在抛出exit 1),当我在注册表中查看时,图像存在。

在同一个 docker 注册表中,还有其他图像存在。他们也经历了相同的 CI/CD 管道。但对他们来说,没有检测到问题。问题是否有可能源于Dockerfile?(虽然它以前可以工作,但使用相同的 Dockerfile

我已经仔细检查过,我正在推送的图像version(例如<IMAGE_NAME>:0.0.1-5e90df92ed140-development:)不在注册表中。

我还提到了与此相关的多个问题和问题,并交叉检查了

  • 用户有权推拉图像
  • 具有相同数量的清单fsLayers作为history

注意:我们使用的是JFrog Artifactory 版本到 6.12.2

Docker 版本(在我的本地机器上,它也失败了。带有相同的消息):

Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf5
  Built:            Thu Oct 17 23:50:38 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
Run Code Online (Sandbox Code Playgroud)

错误:

596280599f68: Layer already exists
5d6cbe0dbcf9: Pushed 
[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the xxxxxxx.docker.repositories.xxxxxx.com registry NOW to avoid future disruption. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
manifest invalid: manifest invalid
Run Code Online (Sandbox Code Playgroud)

小智 12

遇到了同样的问题。问题是 repo 不允许您覆盖图像标签。我将标签更改为新的主要版本。

  • 您是说图像标签已经存在于存储库中并且在尝试推送时?如果是这样,那么我已经检查了多次,它不存在,直到 docker Push 失败。 (3认同)

小智 8

在 6.16 中遇到了 samish 问题。该问题与授权有关。我还必须向构建代理用户添加删除/覆盖存储库操作。

构建代理只有写权限,第二次构建相同标签的镜像时,无法覆盖清单!这使得客户端出于某种原因回滚到 schema1。

通过 Artifactory 的系统日志弄清楚了。