Docker commit 命令保存的镜像文件太大的问题

基础镜像: centos7.5git

进入容器后, 前后安装了 jdk1.8, maven3.6.0, git, rocketmq4.3.2docker

安装完成后使用 docker commit 命令保存为镜像centos

结果跑了半天之后终于保存下来一看居然有 3.3G 的大小bash

我勒个去maven

 

去网上查了一番之后发现一个问题centos7

因为docker镜像的构建方式是以层的概念来实现的内存

就是说我在容器内所作的全部操做都会在构建镜像时运行一遍源码

因此每个操做所涉及到的内存空间, 都会成为镜像文件的一部分dockerfile

好比我在容器内下载了rocketmq的源码, 并在里面编译安装完成it

随后我把源码删掉了, 但是实际上他已经被深深地刻在了镜像上

 

投机取巧:

将已经安装好各个软件的容器中的相关文件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应该会更小

可是我如今还不会写, 再说吧!

相关文章
相关标签/搜索