【问题标题】:What is the Docker cross platform architecture什么是 Docker 跨平台架构
【发布时间】:2018-09-04 10:49:37
【问题描述】:

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

【问题讨论】:

  • docker中的镜像只有gnu/linux,没有windows或osx容器,所以docker守护进程在windows和osx操作系统的后台运行linux vm。
  • @shi 文档特别提到了 linux 和 windows 容器 - docs.docker.com/docker-for-windows。如果它只是在 windows 上运行一个 linux vm,那么 windows 容器是什么?
  • url 的内容与我所说的并不矛盾,在 windows 或 osx os 的情况下,docker 它自己在 linux vm 上运行。一般来说,容器是进程,而在 windows 和 macos 中,它们是在 vm 中运行的进程。据我所知,你不能用 docker 运行 windows 或 osx 容器(除了 linux)。
  • 啊哈,Docker 不运行 .exe 文件,它只运行 linux 二进制文件,在 linux 内部直接(本机)或通过 vm。
  • @shi Docker 文档明确定义了容器(从镜像构建的运行时环境)是什么,分别指的是 Linux 和 Windows 容器,但你说没有 Docker Windows 容器,这显然是一个矛盾。我觉得使用的术语很混乱,希望有人能解决这个问题。

标签: docker hybrid-cloud


【解决方案1】:
  • “Docker 不是虚拟机”

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

“容器是 进程,源自 tarball,锚定到 命名空间 并由 cgroups 控制”

Dan Mayer,#LeadDevLondon 拍摄 - 2018 年 6 月

您还可以在此处找到一些关于 linux 容器的有趣内容:Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon,作者 Jérôme Petazzoni


  • 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 容器类型

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

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

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

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


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

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


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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-09-11
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多