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的撰写问题