在我以前的公司中,我们采用了微服务架构并使用Docker来实现它。 Docker镜像的平均大小约为300MB - ~600MB。然而,我的新公司主要使用Docker进行开发工作流程,平均图像大小约为1.5GB - ~3GB。一些较大的图像(10GB +)正在积极重构以减小图像大小。
从我读过的所有内容中,我觉得这些图像太大了,我们会遇到问题,但团队的其他成员认为Docker Engine和Docker Swarm应该毫无问题地处理这些图像大小。
我的问题: 是否有一个可接受的Docker图像理想范围,以及我将尝试使用GB图像的工作流程时会遇到哪些陷阱(如果有的话)?
答案 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,取决于现在"新"你的新公司"是的,如果你不晃动船,它可能是最好的。