docker push失败:清单无效 [英] docker push fails : manifest invalid
问题描述
尝试将 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
ashistory
注意:我们正在使用 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屋!