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應該會更小

可是我如今還不會寫, 再說吧!

相關文章
相關標籤/搜索