出现了一个问题,因为我正在向我的团队介绍Docker,我不知道如何回答。
these directions上的许多预构建容器(仅举一个例子是jboss / wildfly容器)构建在特定操作系统(Ubuntu,CentOS等)的容器之上。其中一些容器实际上只不过是这些操作系统的容器。
然而,Docker的主要存在理由是Docker Hub,它声称它比虚拟机技术更好,它的重量更轻,因为它不需要建立在操作系统。但如果是这样的话,并且大多数容器都包含操作系统,这不会破坏目的并使索赔无效吗?
那么在这些OS Docker镜像中是什么,以及如何能够提出更轻量级的声明?它是操作系统的一个简化版本吗?
可以制作一个不是在操作系统之上构建的Docker镜像吗? 什么决定了应用程序何时从容器中嵌入的操作系统获取OS服务,而不是从主机获取OS服务?
答案 0 :(得分:4)
Docker镜像(很可能包含来自Linux发行版的基本系统)是只读的,并且在您写入某个位置时启用了多个启用的图层。因此,您可以共享基本图像并添加"附加组件"如果你愿意的话。这称为联合文件系统。 docker文档提供了更多信息here。与虚拟机相比,这种共享使得Docker消耗更少的资源(在这种情况下为fs空间),您必须在每个虚拟机上安装新的分发。
请注意,您没有拥有来安装完整的Ubuntu(无论如何内核与主机系统共享),只是通常需要大部分内容。要在容器中运行的应用程序。您可以轻松找到被剥离的图像,省略运行大多数应用程序所不需要的文件,同时仍然可以用于许多目标(因此您仍然可以共享基本图像,请参见上文)。