新业务采用容器化部署已经是大家的常态,不管我们是 Docker 还是 K8s ,但容器镜像的大小也是一个要注意的点。这里我们将记录使用 Rust 版的 Diving 如何查看容器镜像的结构,为优化方向提供数据支撑。
在测试服务器上安装 Diving ,如果你使用国外镜像源,那记得用国外的服务器, hub.docker.com 很低概率可以正常访问。
1 | curl -Ls https://github.com/vicanso/diving-rs/releases/download/v0.5.6/diving-linux-x86 -o /usr/local/bin/diving |
通过浏览器访问 http://${IP}:7001
,不使用命令行是为了方便查看镜像的结构。
这里以 ghcr.io/hongfs/env:wrk
为例,查看其镜像结构。
可以看见,镜像未解压是 366 MB
,解压后是 837 MB
。
我们可以切换层,设置筛选的文件大小,来看看哪里的文件比较大。
另外下滑你还可以看见 浪费的空间概要
修改或新增的大文件
。
目前我们汇总一下,一个是 /code/wrk/obj/openssl-1.1.1i/test
看起来是测试文件,居然 363 MB,另外是我们 git clone 时遗留的 .git
文件夹,这个对我们也没啥用。
我们试一下在 Dockerfile 里面删除这两个文件夹,看看镜像大小是否有变化。
等待镜像构建完成,我们重新点击页面上方的 开始分析
按钮,过一会就可以看见页面有变化了。
保险起见,我们在服务器验证镜像能不能正常运行。
1 | docker run --rm -it --pull always ghcr.io/hongfs/env:wrk -t1 -c1 -d10s https://www.hongfs.cn/ |
好了,是可以正常使用的,经过优化后,现在镜像的大小只有之前的一半。