执行docker system prune -a对docker进行清理后,构建项目报错DeadlineExceeded以及failed to copy: httpReadSeeker:

执行docker system prune -a对docker进行清理后,构建项目报错DeadlineExceeded以及failed to copy: httpReadSeeker:

背景   

    今天无意间通过 df -h 查看系统硬盘使用情况时,发现已经占用了30G,满头问号,怎么会占用这么大硬盘,也没有很耗费硬盘的业务呀,通过du -sh ./* 查看,其中的20多个G都被var文件夹下的docker占据了,后查询确认是docker产生的镜像缓存文件,通过

docker system df命令查看Docker的磁盘使用情况,发现Docker Images就占用了28G,找到问题,因为我可以确认我的项目只依赖于Redis以及Nginx,这两个镜像文件不可能占用这么大的磁盘空间,所以下一步就是清理这部分垃圾数据了。原以为直接使用docker system prune -a命令清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)就行了,所以我在项目运行期间执行的清理命令,清理完后项目接口都正常,但是当我重新构建项目的时候确报错了。

构建命令:

docker-compose up --build -d app

错误信息

ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: openjdk:8-jdk-alpine: failed to copy: httpReadSeeker: failed open: failed to do request: 
Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/21/210ecd2595991799526a62a7099718b149e3bbefdb49764cc2a450048e0dd4c0/data?verify=1720696600-wMK4EfPHNGMe%2F6svLpO35uP38lg%3D": dial tcp 128.242.240.155:443: i/o timeout

排查问题

看错误意思好像是在下载jdk8镜像时报错了,无法从远程仓库下载所需文件,不可能呀!因为我原来是能够正常下载的,只不过清理了缓存就不行了?现如今只能尝试更换成国内的镜像源试试了,

解决问题

我这里选用的是阿里云的镜像源,获取方式是先访问地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:

执行docker system prune -a对docker进行清理后,构建项目报错DeadlineExceeded以及failed to copy: httpReadSeeker:

然后进入/etc/docker/目录,查看是否存在daemon.json文件,如果存在就直接编辑,不存在则创建,加入以下内容:

{
  "registry-mirrors": ["https://你的镜像id.mirror.aliyuncs.com"]
}

记的重启docker

sudo systemctl restart docker

最后重新构建项目,问题解决。

我上面是一种解决方案,网上还有另一种方案,就是直接在Dockerfile中修改获取镜像时的地址,我没试,理论上应该是可行的,一个是全局修改镜像地址一个是局部,看自己需求吧

原来写法:

FROM openjdk:8-jdk-alpine

更换为可用的国内镜像源:

FROM registry.cn-hangzhou.aliyuncs.com/google_containers/openjdk:8-jdk-alpine

总结:

    在清理完docker缓存并重新构建时,理论上需要重新下载并构建所有依赖的镜像,原来没问题是因为很早以前使用镜像源还能用,平时构建的时候并不会从远程拉取镜像所以不会发现问题,但是再清理过缓存后,所有依赖的镜像都需要重新拉取,所以才会暴露问题,希望能够帮到大家,最后,如果有想快速建设企业或者博客网站的,不妨关注下我们的diy自助建站平台,基于Java语言SpringBoot框架实现的建站系统,有更高的安全性、稳定性以及超高性能,而且价格优惠,百元建站,万元品质保障!如果有高端响应式(Bootstrap、TailwindCSS)建站网站模板或者各类建站素材的需求也可以关注我们的资源频道。