美文网首页
file integrity checksum failed

file integrity checksum failed

作者: 码代码的陈同学 | 来源:发表于2018-04-21 15:43 被阅读0次

    文章来源:陈同学 | 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

    解决方式

    • 方式一:彻底删除基础镜像并重新获取
    • 方式二:直接弃用该基础镜像, 使用更高版本的镜像(前提是有高版本的镜像,且不影响程序)

    相关文章

      网友评论

          本文标题:file integrity checksum failed

          本文链接:https://www.haomeiwen.com/subject/jnmxlftx.html