关于容器,我是一个新手。
我对在进程隔离(不是Hyper-V隔离)中运行的Windows容器特别感兴趣
我一直在阅读和观看视频,但是到目前为止,我所做的阅读并没有向我解释一个基本问题。
每个Windows容器/映像是否都必须包含nanoserver或servercore的基本映像/层?
让我感到困惑的是诸如以下视频中在 5m35sec 上发表的评论;
Windows Container 101 Video on Channel9
他发了言(我在解释)
”表明构建docker映像唯一需要的是静态 链接的二进制文件。”
对我而言,这意味着如果我运行容器的HOST操作系统具有所有必要的依赖关系,则可以从基本操作系统虚拟化内核,而无需在docker中使用基本操作系统映像/层图片。
我想念什么?为什么我需要nanoserver或servercore基本映像层?
如果我的Host操作系统是v1903,并且docker映像需要v1903的内核,为什么它不能从HOST操作系统虚拟化内核?
预先感谢!
答案 0 :(得分:1)
docker的基本思想是重用主机系统的内核,有关Windows容器,请参见this:
Windows Server容器通过进程和名称空间隔离技术提供应用程序隔离,这就是为什么这些容器也称为进程隔离容器的原因。 Windows Server容器与容器主机以及主机上运行的所有容器共享一个内核。这些与进程隔离的容器不提供敌对的安全边界,因此不应用于隔离不受信任的代码。由于共享的内核空间,这些容器需要相同的内核版本和配置。
但是,正如您所知,要使操作系统运行,仅内核是不够的,您需要文件系统。
因此,这是基础映像的根源,请参见this。
文件系统由一系列图层组成,这使您可以将某些图层分隔为一个图像,而将其他图层分隔为另一个图像。使用基础映像,即nanoserver or servercore
,不同的应用程序可以重用相同的基础映像,并仅将应用程序二进制文件构建在基础映像上。
如下图所示:具有自己的二进制文件的不同容器可以共享基本映像(例如此处的ubuntu15.04),每个容器的映像以及共享的公共映像可以是使容器运行的完整文件系统。 / p>