定位镜像大小
1、先整体看下镜像各层比较大的是哪一层
docker history --no-trunc test:release --format "{{.Size}}\t{{.CreatedBy}}" | sort -h
2、然后进入该镜像的容器,根据第一步中的结果,查看具体哪些文件占比大
du -h --max-depth=2 install/ | sort -hr
3、根据业务分析原因,选择删除
以我遇到例子为例:
通过1和2,锁定了ros系统中在install目录下有两个python通过pyinstaller生成了可执行文件,但是没有排除一些系统中已经有的库,导致_internal这个临时文件中会有很多库,如下图
后面在main.spec中增加了要排除的库(系统中已经安装),就少了很多
除了直接修改main.spec,也可以pyinstaller命令的时候通过--exclude-module参数来排除