Docker commit 命令保存的镜像文件太大的问题
基础镜像: centos7.5
进入容器后, 先后安装了 jdk1.8, maven3.6.0, git, rocketmq4.3.2
安装完成后使用 docker commit 命令保存为镜像
结果跑了半天以后终于保存下来一看竟然有 3.3G 的大小
我勒个去
去网上查了一番以后发现一个问题
由于docker镜像的构建方式是以层的概念来实现的
就是说我在容器内所做的所有操作都会在构建镜像时运行一遍
所以每一个操作所涉及到的内存空间, 都会成为镜像文件的一部分
比如我在容器内下载了rocketmq的源码, 并在里面编译安装完成
随后我把源码删掉了, 可是实际上他已经被深深地刻在了镜像上
投机取巧:
将已经安装好各个软件的容器中的相关文件download到宿主机的/home/package目录下
比如我这里的:
/usr/local/jdk1.8
/usr/local/maven3.6.0
/usr/local/rocketmq4.3.2
随后使用基础centos镜像打开一个新容器, 并把这些文件挂载到容器内:
docker run -it -v /home/package:/usr/local --privileged=true <centos镜像id> /bin/bash
进入容器后, 只需要修改 /root/.bashrc 文件, 设置一下环境变量
然后 docker commit 此容器
这样构建下来的镜像大小是 300+M (centos基础镜像为202M)
算是一波大瘦身吧. 当然是用dockerfile应该会更小
但是我现在还不会写, 再说吧!