新手剛入門,自己學著創作系統鏡像和各種應用的鏡像
我先自己製作了一個centos67的鏡像,然後基於centos67裝了vim,再docker commit 保存為centos67vim
然後再基於centos67vim上編譯安裝了mysql5.6再commit保存為mysql56,可是發現容量就達1.591GB了
我再docker pull mysql 發現為什麼官方提供的只有360.3
多謝各位大人幫忙解答! !
PHP中文网2017-04-24 09:12:48
在製作鏡像的過程中,我們要注意幾點:
1.檔案系統是UnionFs,Dockerfile中每一條RUN都會產生一個層次(layer)。所以我們需要在每一條RUN之後清理產生的資料。因為產生的結果(3G的大小)是各層次大小的線性疊加。
2.為什麼官方的鏡像普遍偏小呢?我們就以mysql:5.6來作為參考,來分析一下:
RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
在更新組成以後,接著刪除了apt的快取的包文件。通常來說這個資料夾視情況會佔用100M左右。
RUN { ...&& apt-get update && apt-get install -y
mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* && rm
-rf / var/lib/mysql && mkdir -p /var/lib/mysql 在安裝db以後,照例刪除快取的套件檔案。刪除/var/lib/mysql能清除範例資料庫。
而我們觀察一下,hub.docker.com中最常用的vim包,我們發現haron/vim鏡像是300M用的scratch作為基礎鏡像。
在hub.docker.com上粗略找了下,沒有找到用centos做基礎的mysql鏡像。個人估計是快取的包沒有刪掉,導致的問題。
mysql鏡像分析
haron/vim分析
Centos基礎鏡像分析
Ubuntu基礎鏡像分析
怪我咯2017-04-24 09:12:48
你可以查看mysql的官方鏡像的dockerfile,基礎鏡像估計也應該不一樣。一般情況下,很多官方的基礎鏡像都是很小的。例如scratch
,然而如果使用一個ubuntu什麼的,就得180M左右 (感謝 @
imdjh 指正) ,centos 我沒留意過。