84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
新手刚入门,自己学着创建系统镜像和各种应用的镜像
我先自己制作了一个centos67的镜像,然后基于centos67装了vim,再docker commit 保存为centos67vim然后再基于centos67vim上 编译安装了mysql5.6再commit保存为 mysql56,可是发现容量就达1.591GB了
我再docker pull mysql 发现为什么官方提供的只有360.3
多谢各位大大帮忙解答!!
在製作鏡像的過程中,我們要注意幾點: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 -ymysql-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基礎鏡像分析
怪不得我的安裝了一個lamp一件安裝包就3G了,原來一個mysql就增加了1G
還沒入門建議讀完入門教學再玩
沒刪除暫存檔就commit
你可以查看mysql的官方鏡像的dockerfile,基礎鏡像估計也應該不一樣。一般情況下,很多官方的基礎鏡像都是很小的。例如scratch,然而如果使用一個ubuntu什麼的,就得180M左右 (感謝 @imdjh 指正) ,centos 我沒留意過。
scratch
如果你可以把你的Dockerfile公開出來的話,大家可以幫你看看。主要還是Dockerfile的撰寫問題
在製作鏡像的過程中,我們要注意幾點:
1.檔案系統是UnionFs,Dockerfile中每一條RUN都會產生一個層次(layer)。所以我們需要在每一條RUN之後清理產生的資料。因為產生的結果(3G的大小)是各層次大小的線性疊加。
2.為什麼官方的鏡像普遍偏小呢?我們就以mysql:5.6來作為參考,來分析一下:
而我們觀察一下,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
參考資料:
mysql鏡像分析
haron/vim分析
Centos基礎鏡像分析
Ubuntu基礎鏡像分析
怪不得我的安裝了一個lamp一件安裝包就3G了,原來一個mysql就增加了1G
還沒入門
建議讀完入門教學再玩
沒刪除暫存檔就commit
你可以查看mysql的官方鏡像的dockerfile,基礎鏡像估計也應該不一樣。一般情況下,很多官方的基礎鏡像都是很小的。例如
scratch
,然而如果使用一個ubuntu什麼的,就得180M左右 (感謝 @imdjh 指正) ,centos 我沒留意過。
如果你可以把你的Dockerfile公開出來的話,大家可以幫你看看。主要還是Dockerfile的撰寫問題