為什麼docker上自己建立的mysql映像特別大
巴扎黑
巴扎黑 2017-04-24 09:10:48
0
5
1411

新手剛入門,自己學著創作系統鏡像和各種應用的鏡像

我先自己製作了一個centos67的鏡像,然後基於centos67裝了vim,再docker commit 保存為centos67vim
然後再基於centos67vim上編譯安裝了mysql5.6再commit保存為mysql56,可是發現容量就達1.591GB了

我再docker pull mysql 發現為什麼官方提供的只有360.3

多謝各位大人幫忙解答! !

巴扎黑
巴扎黑

全部回覆(5)
洪涛

在製作鏡像的過程中,我們要注意幾點:
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鏡像。個人估計是快取的包沒有刪掉,導致的問題。

至於@ShawnTaoo兄弟提到的基礎鏡像大小問題,我也做了下調查:centos:latest 190+MB, debian:jessie: 130+MB, ubuntu:latest 180+MB


參考資料:

  1. mysql鏡像分析

  2. haron/vim分析

  3. Centos基礎鏡像分析

  4. Ubuntu基礎鏡像分析

左手右手慢动作

怪不得我的安裝了一個lamp一件安裝包就3G了,原來一個mysql就增加了1G

迷茫

還沒入門
建議讀完入門教學再玩

沒刪除暫存檔就commit

刘奇

你可以查看mysql的官方鏡像的dockerfile,基礎鏡像估計也應該不一樣。一般情況下,很多官方的基礎鏡像都是很小的。例如scratch,然而如果使用一個ubuntu什麼的,就得180M左右 (感謝 @
imdjh 指正) ,centos 我沒留意過。

阿神

如果你可以把你的Dockerfile公開出來的話,大家可以幫你看看。主要還是Dockerfile的撰寫問題

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板