什么是Docker跨平台架构

问题描述 投票:0回答:1

Docker不是VM,所以它只运行操作系统原生的应用程序,对吧?这是否意味着Docker for Windows只运行Windows .exe文件?那么Windows和Linux的Docker容器,它们有什么共同点,如果有的话?容器是否可以以任何方式在不同的操作系统上重用?

docker hybrid-cloud
1个回答
1
投票
  • “Docker不是VM”

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

“容器是从tarball中诞生的进程,锚定到名称空间并由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操作系统中如何进行隔离,但我认为逻辑与Linux类似。关于Windows containers的一些信息:

Windows Container Types

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

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

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

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

  • Windows和Linux,它们有什么共同点,如果有的话?

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

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

是和否。您可能面临限制。例如,如果您有一个启动FROM ubuntu:latest的应用程序并希望使其在raspberry Pi上运行,则必须从为arm架构制作的基本映像构建一个新容器。 Docker不是一个抽象,它将采用任何容器并使其适用于任何架构,操作系统......您必须知道您要实现的目标,并仔细决定您最终选择使用的内容。

© www.soinside.com 2019 - 2024. All rights reserved.