陈同学
微服务
Accelerator
About
# file integrity checksum failed 本文记录上周Docker遇到的一个问题 ## 问题背景 Jenkins自动构建镜像之后,向私有registry推送镜像时,出现了如下错误,且镜像push失败 ``` file integrity checksum failed for "etc/ssl/certs/java/cacerts” ``` ## 排查过程 因仅熟练使用Docker命令,对于其原理并未过多学习,因此排查问题过程比较笨,以下记录排查步骤: * 向其他registry推送该镜像同样推送失败 -> 说明并非registry问题 * 推送其他镜像到registry,推送成功 -> 说明docker正常 * 将Dockerfile的 `FROM` 镜像改为其他基础镜像,push成功 -> 说明基础镜像出了问题 * 彻底删除出了问题的基础镜像,重新pull该镜像,push成功 通过各步骤可以判断是基础镜像出了问题,联想到前一周暴力删除过`/var/lib/docker/overlay`目录中两年前的文件夹,因此问题原因已明确: `因为删除了基础镜像的某层对应的文件夹,导致镜像的checksum对不上,此时镜像已不完整,因此push失败` **为什么删除/var/lib/docker/overlay下的数据?** /overlay目录已经有约150G, 很多早期产生的垃圾镜像以无法通过`docker rmi -f `强行清理,因此对开发环境的registry进行了尝试性的暴力清理,由此产生的问题也让我们学习了docker的OverlayFS ## 解决方式 * 方式一:彻底删除基础镜像并重新获取 * 方式二:直接弃用该基础镜像, 使用更高版本的镜像(前提是有高版本的镜像,且不影响程序)
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
Docker push镜像时报 file integrity checksum failed
文章链接:
https://chenyongjun.vip/articles/22
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力