2016-07-26 619 views
0

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

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

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

回答

-1

码头本身可以处理它们没有问题,我不能说群集的任何事情。 “多大太大”虽然只有你的团队才能回答。如果图像是5GB,其中90%对应用程序很重要,我不会说它臃肿。如果图像只有300M,但只有10%是应用程序需要的,我会说它膨胀了。

FWIW,根据刚刚“新”你的“新公司”,这可能是最好的,如果你不摇船。

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,将需要在今后的较少依赖。

+0

感谢您的回答。然而,我的问题不是“我怎样才能缩小图像尺寸”,而是更像是“如果我的图像尽可能小,而且仍然是3GB,我会遇到什么问题......?” – user1873858

相关问题