Docker跨平台架构是什么

Docker跨平台架构是什么,docker,hybrid-cloud,Docker,Hybrid Cloud,Docker不是虚拟机,所以它只运行操作系统自带的应用程序,对吗?这是否意味着Docker for Windows只运行Windows.exe文件?那么Windows和Linux的Docker容器有什么共同点呢?容器是否可以在不同的操作系统上以任何方式重用? “Docker不是虚拟机” 正确,容器应被视为在沙箱中运行的进程。如果您搜索Linux中这种隔离是如何发生的,您肯定会遇到名称空间&cgroup。我最近看到的一个容器定义是: “容器是进程从tarball中诞生,锚定到名称空间,并由cgr

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

  • “Docker不是虚拟机”
正确,容器应被视为在沙箱中运行的进程。如果您搜索Linux中这种隔离是如何发生的,您肯定会遇到
名称空间
&
cgroup
。我最近看到的一个容器定义是:

“容器是进程从tarball中诞生,锚定到名称空间,并由cgroup控制。”

照片作者#LeadDevLondon-2018年6月

您还可以在这里找到一些关于linux容器的有趣内容:Jérôme Petazzoni


  • Docker for Windows仅运行Windows.exe文件
不考虑使用Windows PC的开发人员可以在稍后部署到云上的基于Linux的容器上工作。Docker for Windows带来了这种灵活性,但是如果您运行linux容器,这些容器将在某种虚拟化环境上运行。最初使用的是Oracle Virtualbox,现在使用的是Hyper-V

我不知道Windows操作系统内部是如何进行隔离的,但我认为逻辑与Linux类似。有关以下方面的一些信息:

Windows容器类型 Windows容器包括两种不同的容器类型,即运行时

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

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

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


  • Windows和Linux有什么共同点
一般来说,我会回答说容器服务于微服务的思想,关注点分离,做一件事&做好它


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

是和否。你可能会面临限制。例如,如果您有一个从ubuntu:latest启动的应用程序
,并且想让它在raspberry Pi上工作,那么您必须从为arm架构制作的基础映像构建一个新的容器。Docker不是一个抽象概念,它将接受任何容器并使其在任何体系结构、操作系统上工作。。。你必须知道你想要实现什么,并仔细决定最终选择使用什么。

docker中的映像仅为gnu/linux,没有windows或osx容器,因此docker守护进程在windows和osx OSs中的Background中运行linux vm。@shi docs特别提到linux和windows容器-。如果它只是在windows上运行linux虚拟机,那么什么是windows容器?url的内容与我所说的并不矛盾,docker在windows或osx操作系统的情况下,它自己在linux虚拟机上运行。一般来说,容器是进程,而在windows和macos中,它们是在vm内部运行的进程。据我所知,不能用docker运行windows或osx容器(除linux外还有其他容器)。啊哈,docker不运行.exe文件,它只运行linux二进制文件,直接在linux内部(本机)或通过vm运行。@shi docker文档清楚地定义了容器(从映像构建的运行时环境)分别是Linux和Windows容器,但您说没有Docker Windows容器,这显然是一个矛盾。我觉得在使用术语方面存在很大的混乱,希望有人能澄清这一点。为了清楚起见,直接从Docker文档中可以看出:“Docker提供了在称为容器的松散隔离环境中打包和运行应用程序的能力。”——因此,Docker认为,容器不是进程,进程也不是容器。谢谢你提供的信息。容器是一个进程,docker称之为容器,但从技术上讲它是一个进程。你提供的链接没有说明这一点我找到了我的消息来源。。。这是由@alicegoldfuss于2018年6月在#LeadDevLondon拍摄的,