为什么Docker容器映像如此之大?
我通过Fedora的Dockerfile创建了一个简单的映像(最初为320 MB)。
添加了Nano(这个1MB大小的微型编辑器),图像的大小已增加到530 MB。我在此基础上添加了Git(30-ish
MB),然后将图像大小的火箭提高到830 MB。
那不是疯了吗?
我试图导出和导入容器以删除历史记录/中间图像。这项工作最多可节省25 MB,现在我的图像大小为804
MB。我也尝试过在一个命令上运行许多命令RUN
,但仍然得到相同的初始830MB。
我一直在怀疑是否值得使用Docker。我的意思是,我几乎没有安装任何东西,而我的可用空间已超过1GB。如果我必须添加一些重要的东西,例如数据库,等等,我可能会用完磁盘空间。
任何人都可笑的图像大小?你如何解决?
除非我的Dockerfile非常错误?
FROM fedora:latestMAINTAINER Me NotYou <email@dot.com>
RUN yum -y install nano
RUN yum -y install git
但是很难想象这里可能出什么问题。
回答:
正如@rexposadas所说,映像包括所有层,并且每个层都包括您所安装内容的所有依赖项。同样重要的是要注意,基本映像(例如fedora:latest
往往是非常准系统的。您可能会对安装的软件所具有的依赖性数量感到惊讶。
通过添加yum -y clean all
到每一行,我能够使您的安装大大减少:
FROM fedora:latestRUN yum -y install nano && yum -y clean all
RUN yum -y install git && yum -y clean all
在提交层之前,对于每个RUN都必须这样做,否则删除实际上并不会删除数据。也就是说,在并集/写时复制文件系统中,最后清理并不会真正减少文件系统的使用,因为实际数据已经提交给了较低的层。为了解决这个问题,您必须清洁每一层。
$ docker history bf5260c6651dIMAGE CREATED CREATED BY SIZE
bf5260c6651d 4 days ago /bin/sh -c yum -y install git; yum -y clean a 260.7 MB
172743bd5d60 4 days ago /bin/sh -c yum -y install nano; yum -y clean 12.39 MB
3f2fed40e4b0 2 weeks ago /bin/sh -c #(nop) ADD file:cee1a4fcfcd00d18da 372.7 MB
fd241224e9cf 2 weeks ago /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar 0 B
511136ea3c5a 12 months ago 0 B
以上是 为什么Docker容器映像如此之大? 的全部内容, 来源链接: utcz.com/qa/400464.html