Docker镜像推送至容器注册表时文件校验和失败求助
Docker镜像推送时文件校验和失败的原因及解决办法
错误日志
vineescar@Vijeyakumars-MacBook-Pro palaly-expression-builder % docker push ruleengine.azurecr.io/ruleengine:latest The push refers to repository [ruleengine.azurecr.io/ruleengine] bf45d8951c0e: Layer already exists f3e1bae0bb3f: Layer already exists 5b48befaff31: Layer already exists fbc8c9dabc6a: Layer already exists 94643e63d24c: Layer already exists 8faef4eb93ef: Layer already exists c5a4f85fb941: Layer already exists 0afa6796154a: Layer already exists b11bb163e263: Layer already exists b779a72428fa: Pushing [==================================================>] 176.7MB/176.7MB 8ada682d3780: Layer already exists 15bb10f9bb3a: Layer already exists file integrity checksum failed for "etc/bash_completion.d/git-prompt"
用户问题
请问有人知道该问题的原因吗?
我预期将本地Docker镜像上传至容器注册表,但推送过程中出现了上述文件校验和失败的错误。
原因及解决办法
- 镜像文件损坏:本地镜像里的
etc/bash_completion.d/git-prompt文件在构建或存储时损坏,导致校验和不匹配。
解决:重新构建镜像,确保构建过程无文件写入错误;也可以用docker save导出镜像再导入,验证文件完整性后再推送。 - Docker缓存异常:构建镜像时依赖了损坏的旧缓存层,缓存中的文件未被正确更新。
解决:构建时添加--no-cache参数,强制重新构建所有层,避开损坏的缓存。 - 网络传输故障:推送过程中网络波动导致文件传输不完整,触发校验和验证失败。
解决:检查网络连接稳定性,重新执行docker push命令;如果是Azure容器注册表的网络问题,可切换网络环境或检查注册表的访问权限、运行状态。 - 本地磁盘问题:存储镜像的本地磁盘存在错误,导致文件读取异常。
解决:检查磁盘健康状态,修复磁盘错误后,重新构建或拉取镜像再尝试推送。
内容的提问来源于stack exchange,提问作者vijeyakumar vineescar
相关产品推荐
相关产品推荐

