什么是Docker跨平台架构

时间:2018-09-04 10:49:37

标签: docker hybrid-cloud

Docker不是VM,因此它仅运行OS本身的应用程序,对吗?这是否意味着Docker for Windows仅运行Windows .exe文件?因此,用于Windows和Linux的Docker容器有什么共同点,如果有的话?容器可以以任何方式在不同的操作系统上重用吗?

1 个答案:

答案 0 :(得分:1)

  • “ Docker不是VM”

正确的,应将容器视为在沙箱中运行的进程。如果您搜索这种隔离在Linux中是如何发生的,肯定会遇到namespacescgroups。我最近看到的一种容器定义指出:

  

”容器是从tar包中生成的进程,锚定到命名空间并由 cgroups 控制”

enter image description here

照片,Dan Mayer,#LeadDevLondon-2018年6月

您还可以在这里找到有关linux容器的一些有趣的东西:JérômePetazzoni的Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon


  • Docker for Windows仅运行Windows .exe文件吗?

不。考虑具有Windows PC的开发人员可能会在基于Linux的容器上工作,这些容器随后会部署到云中。 Docker for Windows带来了这种灵活性,但是,如果您运行linux容器,则它们将在某种虚拟化环境上运行。最初,Docker toolbox使用Oracle Virtualbox,现在Docker for Windows使用Hyper-V。

我对Windows OS内部如何进行隔离了解不多,但我认为逻辑与Linux类似。有关Windows containers的一些信息:

  

Windows容器类型

     

Windows容器包含两种不同的容器类型或运行时。

     

Windows Server容器 –通过进程和名称空间隔离技术提供应用程序隔离。 Windows Server容器与容器主机以及主机上运行的所有容器共享一个内核。这些容器不提供敌对的安全边界,不应用于隔离不受信任的代码。由于共享的内核空间,这些容器需要相同的内核版本和配置。

     

Hyper-V隔离 –通过在高度优化的虚拟机中运行每个容器来扩展Windows Server容器提供的隔离。在这种配置中,容器主机的内核不与同一主机上的其他容器共享。这些容器设计用于具有虚拟机相同安全性保证的恶意多租户托管。由于这些容器不与主机或主机上的其他容器共享内核,因此它们可以运行具有不同版本和配置的内核(受支持的版本)-例如,Windows 10上的所有Windows容器都使用Hyper-V隔离来利用内核。 Windows Server内核版本和配置。

     

在Windows上运行带有或不带有Hyper-V隔离的容器是运行时的决定。您可以选择最初使用Hyper-V隔离创建容器,然后在运行时选择将其作为Windows Server容器运行。


  • Windows和Linux,它们有什么共同点?

总的来说,我会回答说容器服务于微服务的思想,关注点分离,做一件事情并且做得很好。


  • 容器可以以任何方式在不同的操作系统上重用吗?

是和否。您可能会遇到限制。例如,如果您有一个启动FROM ubuntu:latest的应用程序,并且想使其在树莓派上运行,则必须从用于Arm体系结构的基础映像构建一个新容器。 Docker并不是一个可以使用任何容器并使之在任何体系结构,OS上运行的抽象……您必须知道您要实现的目标,并仔细决定最终选择使用什么。