docker 打包的问题请教一下

2020-10-30 09:25:05 +08:00
 nancheng911

请教一下,最近想把自己使用的 docker 部署到另一台机器上使用docker save >保存了镜像一开有 30g 。网上搜了一些解决方法,最后用docker images 查看还是和之前打包的大小一样,但是这次确定删除了很多不用的安装包之类,不知道为什么大小没有改变。

1170 次点击
所在节点    问与答
7 条回复
Fantaoranges
2020-10-30 09:52:41 +08:00
没说镜像里装的啥环境不好判断,Dockerfile 最好用最精简的镜像来 build
BraveRBT
2020-10-30 10:42:37 +08:00
docker save 会保存所有差异叠加层,用 docker export 导出再导入即可合并这些叠加层.
空间就会得到释放了(会丢失所有的 layer 信息).

save 和 export 的差别如下:
export: Stream the contents of a container as a tar archive.
save: Save an image to a tar archive.
jtwor
2020-10-30 11:03:13 +08:00
发配置看看
nancheng911
2020-10-30 11:26:50 +08:00
@Fantaoranges 装了几个版本的深度学习环境,都比较大

@BraveRBT 多谢我查查看 export

@jtwor docker 新手不知道具体配置指的是什么,怎么查看
BraveRBT
2020-10-30 11:29:20 +08:00
@nancheng911 #4 记得 export 导出的 tar 需要用 import 导入.
killva4624
2020-10-30 17:18:31 +08:00
> 删除了很多不用的安装包之类

这个是在哪里删的? Dockerfile 里吗?

不知道你的 images 是怎么创建的,个人常用的话有两种方式;
- 根据 Dockerfile build (参见 docker build )。这种情况下要精简的话,尽量减少层,把命令都写在一个层里,如果要清理的话,也要在同一个命令层里清理(比如第二层安装 xxx,第三层再 rm xxx,这种情况下不会减少体积)。
- docker run 之后,exec 到容器里操作,再 docker commit 。这种情况维护性极差,不想展开讨论。

另外更换基础镜像(如 alpine\slim ) ,多阶段构建也是减少镜像体积的好办法。
nancheng911
2020-10-31 17:03:37 +08:00
@killva4624 export 回导致部分内容丢失,情况确实就是楼下不想讨论那种。。。
@BraveRBT 就是你说的不想讨论那种,目前看起来只能重新做一个了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/720020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX