基礎鏡像: 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應該會更小
但是我現在還不會寫, 再說吧!