docker push失败:清单无效 [英] docker push fails : manifest invalid

查看:603
本文介绍了docker push失败:清单无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试将 docker push< IMAGE> 到私有Docker映像注册表时,
出现错误,提示清单无效

When trying to do docker push <IMAGE> to a private docker image registry, getting an error saying manifest invalid

伴随错误,它还会给出一些 [不推荐通知] 也是失败的原因。

along with the error, it's giving some [DEPRECATION NOTICE], which might be the cause of the failure as well.

注意::出现此错误并导致 docker push 命令失败后。 (在 ci / cd 中,它失败了,我猜测它抛出 exit 1 ),当我返回时在注册表中,该映像存在。

Note: After getting this error and failing the docker push command. (in ci/cd it's failing the job, I'm guessing its throwing exit 1 ), when I check back in the registry, the image is present.


在同一docker注册表中,还存在其他映像。他们也正在通过相同的CI / CD管道。但是对于他们来说,没有发现任何问题。问题是否有可能源自 Dockerfile ? (尽管以前曾经使用相同的Dockerfile

我已经仔细检查过,图片版本(例如:< IMAGE_NAME> :: 0.0.1-5e90df92ed140-development )我推送的不是存在于注册表中。

I have doubled check that, the image version (e.g: <IMAGE_NAME>:0.0.1-5e90df92ed140-development) I'm pushing is not present in the registry.

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

I have also referred to multiple questions and issues regarding this and crossed checked the


  • 用户有权推送&拉图像

  • 清单与 history 的数量相同li>
  • The user has permission to push & pull images
  • manifests having the same numbers of fsLayers as history

注意:我们正在使用 JFrog Artifactory版本至6.12.2

Note: We are using JFrog Artifactory version to 6.12.2

Docker版本(在我的本地计算机中,它也会失败,并显示相同的消息):

Docker Version (In my local machine, where it fails as well. with the same message):

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

错误:

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


推荐答案

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

Ran into the samish problem with 6.16. The issue was authorization related. I had to add the Delete / Override Repository Action as well to the build agent user.

构建代理仅具有写入权限,第二次使用相同的标记,它无法覆盖清单!这使客户端由于某种原因而回滚到schema1。

The build agent only had write permissions, and the second time it built the image with the same tag, it could not overwrite the manifest! This made the client to roll back to schema1 for some reason.

通过Artifactory的系统日志将其找出来。

Figured it out through the System Logs of Artifactory.

这篇关于docker push失败:清单无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆