现在有些镜像很大(GPU算法镜像一般8G、10G),我想到一个办法(并验证通过):
假设有个基础镜像A(以前曾上传过),某次在A的基础上添加一些内容生成了镜像B。
在测试环境上:
1、先通过dock save分别生成A.tar和B.tar,分别解压到目录A和目录B
2、通过diff -r A B比较两个目录,记录差别
3、将B目录中,只在B目录中的文件和子目录以及A、B目录中共有但内容不同的文件打包成B-add.tar。
在生产环境上:
4、同样将镜像A生成A.tar并解压到A目录
5、将diff比较时只在A目录中的文件和子目录以及公共但不同的文件删除
6、将B-add.tar文件上传到A目录,解压B-add.tar文件,删除(或移走)B-add.tar
7、对A目录重新tar生成一个B.tar文件
8、docker load -i B.tar即可。
这样每次上传只需要上传B-add.tar就行了。