请教一下,最近想把自己使用的 docker 部署到另一台机器上使用docker save >
保存了镜像一开有 30g 。网上搜了一些解决方法,最后用docker images
查看还是和之前打包的大小一样,但是这次确定删除了很多不用的安装包之类,不知道为什么大小没有改变。
1
Fantaoranges 2020-10-30 09:52:41 +08:00
没说镜像里装的啥环境不好判断,Dockerfile 最好用最精简的镜像来 build
|
2
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. |
3
jtwor 2020-10-30 11:03:13 +08:00
发配置看看
|
4
nancheng911 OP |
5
BraveRBT 2020-10-30 11:29:20 +08:00
@nancheng911 #4 记得 export 导出的 tar 需要用 import 导入.
|
6
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 ) ,多阶段构建也是减少镜像体积的好办法。 |
7
nancheng911 OP |