Docker图像尺寸被认为是什么“太大”#?

时间:2016-07-26 19:04:09

标签: docker dockerfile docker-registry

在我以前的公司中,我们采用了微服务架构并使用Docker来实现它。 Docker镜像的平均大小约为300MB - ~600MB。然而,我的新公司主要使用Docker进行开发工作流程,平均图像大小约为1.5GB - ~3GB。一些较大的图像(10GB +)正在积极重构以减小图像大小。

从我读过的所有内容中,我觉得这些图像太大了,我们会遇到问题,但团队的其他成员认为Docker Engine和Docker Swarm应该毫无问题地处理这些图像大小。

我的问题: 是否有一个可接受的Docker图像理想范围,以及我将尝试使用GB图像的工作流程时会遇到哪些陷阱(如果有的话)?

2 个答案:

答案 0 :(得分:1)

在我看来,理想的尺寸只适合你的确切情况。对于我和我现在的公司,我们没有大于1GB的图像。

如果您使用10GB大小的图像并且没有问题(是否可能?!),那么您也可以。

作为问题案例的例子,你可以考虑这样的问题:“当我的图像通过互联网部署到远程服务器/开发机器时,我可以等待1-2个小时吗?”,很可能,这不是好。另一方面,当你没有遇到这样的问题时,你根本就没有问题 另一个问题是当小图像启动几秒钟时,巨大的图像会启动几分钟。如果您使用它,它也可以打破“热部署”方案。

检查图像大小的原因也是合适的,您可以阅读how layers work。 不久,如果你有2个Dockerfile:
第一:

RUN download something huge that weight 5GB
RUN remove something huge from above

第二

RUN download something huge that weight 5GB &&\
    remove something huge from above

结果,第二张图片的重量比第一张图片重5GB,而内部则相同。

另一个技巧是从一开始就使用小型基本图像。只是比较这种差异:

IMAGE NAME     SIZE
busybox        1 MB
alpine         3 MB
debian         125 MB
ubuntu         188 MB 

虽然debian和ubuntu内部几乎相同,但它将从开始50MB开始,并且将来需要更少的依赖。

答案 1 :(得分:0)

Docker本身可以毫无问题地处理它们,我无法对swarm说些什么。 "有多大太大了#34;虽然只有你的团队才能回答。如果图像是5GB,其中90%对应用程序很重要,我不会说它很臃肿。如果图像只有300M,但应用程序只需要它的10%,我会说它很臃肿。

FWIW,取决于现在"新"你的新公司"是的,如果你不晃动船,它可能是最好的。