我是使用Docker的新手,我对我的堆栈使用一个映像库有疑问,或者我必须根据我的需要定义每个映像。
例如,在阅读一篇关于使用docker创建网站的博客时,作者建议使用以下堆栈:

图片来自http://project-webdev.blogspot.de/2015/05/create-site-based-on-docker-part4-docker-container-architecture.html
现在,看看结构,如果我们在Docker注册表中有mongoDB,io.JS,nginx等技术的基础镜像,为什么在这个例子中我们不使用这些镜像实例来使用单个Docker基础镜像来处理所有事情?
发布于 2015-06-11 23:55:06
我是这篇博客文章/系列的作者,所以让我详细说明我选择一个基础图像的原因。:)
Docker提供了对后续图像使用通用基础图像的可能性,因此您可以堆叠所有图像,每个图像只包含与底层图像的差异(这是docker的最大优势!)。您可以节省磁盘空间和RAM。如果你不关心这一点(我的意思是RAM和存储都很便宜),你也可以使用多个镜像。
一个基本映像的另一个优点是,您可以根据需要配置/保护该基本映像。如果您为每个容器使用不同的基础镜像,则必须维护所有基础镜像(例如防火墙),Docker将下载多个不同的镜像(使用更多磁盘空间,容器构建需要更长时间)。
但是,当你查看官方图片时,有什么不同?官方的mongodb、redis和MySQL镜像都是基于debian的:喘息镜像。因此,如果您使用这些图像,它们也将基于相同的基础图像,不是吗?
无论如何,如果你想使用你自己的架构,请随意...请考虑这篇架构/博客文章,作为创建Docker设置的可能想法。多亏了Docker和他们共享内核的方式,你可以使用你想要的任何图像。:)
致以敬意,
萨沙
发布于 2015-06-11 16:56:31
我认为这取决于应用程序,但在这种情况下,您是对的,有一个大的基础图像是没有意义的。
据我所知,作者创建了一个基础镜像,然后从该基础镜像构建了许多其他镜像。当你为docker构建一个镜像时,会创建很多中间镜像,所以如果基础镜像是相同的,它可以被共享,并有可能在你的机器上节省一些内存。
但我不认为这对你运行容器有任何影响。每个容器都是独立的,它们本质上只共享linux内核。这实际上非常糟糕,因为在这种情况下,基础图像很大,并且从这样的图像中生成容器需要大量资源。每个服务的专用镜像要小得多,并且在从它们启动容器时占用的资源要少得多。所以,无论你从构建一个大的基础镜像中节省多少内存,它都是不值得的。
https://stackoverflow.com/questions/30759829
复制相似问题