首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker:如何创建一个堆栈、多个镜像或一个基础镜像?

Docker:如何创建一个堆栈、多个镜像或一个基础镜像?
EN

Stack Overflow用户
提问于 2015-06-10 22:48:23
回答 2查看 2.1K关注 0票数 5

我是使用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基础镜像来处理所有事情?

EN

回答 2

Stack Overflow用户

发布于 2015-06-11 23:55:06

我是这篇博客文章/系列的作者,所以让我详细说明我选择一个基础图像的原因。:)

Docker提供了对后续图像使用通用基础图像的可能性,因此您可以堆叠所有图像,每个图像只包含与底层图像的差异(这是docker的最大优势!)。您可以节省磁盘空间和RAM。如果你不关心这一点(我的意思是RAM和存储都很便宜),你也可以使用多个镜像。

一个基本映像的另一个优点是,您可以根据需要配置/保护该基本映像。如果您为每个容器使用不同的基础镜像,则必须维护所有基础镜像(例如防火墙),Docker将下载多个不同的镜像(使用更多磁盘空间,容器构建需要更长时间)。

但是,当你查看官方图片时,有什么不同?官方的mongodb、redis和MySQL镜像都是基于debian的:喘息镜像。因此,如果您使用这些图像,它们也将基于相同的基础图像,不是吗?

无论如何,如果你想使用你自己的架构,请随意...请考虑这篇架构/博客文章,作为创建Docker设置的可能想法。多亏了Docker和他们共享内核的方式,你可以使用你想要的任何图像。:)

致以敬意,

萨沙

票数 6
EN

Stack Overflow用户

发布于 2015-06-11 16:56:31

我认为这取决于应用程序,但在这种情况下,您是对的,有一个大的基础图像是没有意义的。

据我所知,作者创建了一个基础镜像,然后从该基础镜像构建了许多其他镜像。当你为docker构建一个镜像时,会创建很多中间镜像,所以如果基础镜像是相同的,它可以被共享,并有可能在你的机器上节省一些内存。

但我不认为这对你运行容器有任何影响。每个容器都是独立的,它们本质上只共享linux内核。这实际上非常糟糕,因为在这种情况下,基础图像很大,并且从这样的图像中生成容器需要大量资源。每个服务的专用镜像要小得多,并且在从它们启动容器时占用的资源要少得多。所以,无论你从构建一个大的基础镜像中节省多少内存,它都是不值得的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30759829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档