精简docker的导出镜像( 二 )

参考docker-ce的相关导出模块的源代码(源代码解读就不做了,不算复杂)
docekr-ce/components/engin/savedocekr-ce/components/engin/load可以找出打包出的tar包中放layer文件夹与diff_ids标记的文件层的对应关系 。
1. 解压压缩包2. 读取 centos7 和 ip-server 的inspect3. 找出 centos7 和 ip-server 的diff_ids同的层数4. 按照相同的层数依次找到manifest.json中记录的layers文件目录,并把layer.tar的压缩包置空5. 重新打包测试改处理的导出包在centos:7镜像已存在的环境中可以被正常导入操作 。
代码实现参考 github.com/zn-chen/dockerdiff懒得琢磨也可以直接使用,在安装好go环境下git clone 下来 make && make install 后即可食用 。

推荐阅读