Tig*_*ear 29 docker docker-machine docker-for-windows
如果Docker社区在Windows上本机运行,那为什么它需要Hyper-v?IE,本地暗示Docker-Engine可以在Windows上运行指令吗?它看起来像它仍然启动一个Linux VM并与之一起运行.
对我来说,似乎docker-toolbox使用运行linux的oracle hyper-visor,而Docker社区使用运行linux的Hyper-V.我忽视了另一个重要的区别吗?
它是否正确?我理解"本地"这个词是错误的,是码头工人误用了这个词,还是我还缺少其他一些方面?
我问的原因是因为我注意到你没有将Docker-machine与社区版一起使用,我想知道为什么会这样.docker-machine是在windows上运行的东西,而Docker Engine却没有?我认为docker这个词过载,在这种情况下可能导致混乱:)
提前致谢!
BMi*_*tch 18
Docker对Windows的支持有几种变体:
Docker Toolbox包含Docker Machine,它将在VirtualBox中旋转boot2docker镜像.这些是在VM内部运行Linux内核的Linux容器.这最初是Windows用户的唯一选择.
Docker for Windows使用Hyper-V运行基于LinuxKit的Moby VM来运行Linux映像.LinuxKit提供了一个基于容器的Linux操作系统,并且有一些集成使它看起来不像最终用户的VM,例如你可以使用127.0.0.1而不是VirutalBox VM的IP.如果您有可用的Hyper-V并且想要在Windows上运行Linux容器,则这是首选选项.
Windows Server Containers在同一主机操作系统上运行Windows二进制文件,类似于Linux操作系统上的Linux容器不需要VM.
Hyper-V容器在单独的VM内运行Windows二进制文件以进行额外隔离.
您可以在Microsoft的文档中阅读有关后两个选项的更多信息.
需要注意的重要一点是,当您在支持的服务器(如2016)上安装Docker for Windows时,您可以在两者之间切换选项2,3和4.对于Linux和Windows容器,设置中有一个影响所有正在运行的容器和命令的开关.在Windows Server Containers和Hyper-V容器之间,命令行--isolation
上有一个选项docker run
.因此,即使您只需要选项3,我相信您需要支持Hyper-V才能覆盖2和4.
Docker 在 Linux 上发展而来。许多混乱是由于 Docker 试图支持 Windows 上的容器化而产生的。
\n如果容器可以直接在主机操作系统上运行,则将其视为 \xe2\x80\x9cnative\xe2\x80\x9d。
\nLinux 容器:在隔离的 Linux 环境中运行的 Linux 应用程序。
\n这个相同的容器可以使用虚拟化来模拟 Linux 环境在 Windows 上运行,但该容器仍然在 Linux 上运行。这种虚拟化可以
Windows(服务器)容器:在隔离的 Windows 环境中运行的 Windows 应用程序。
\n正如您所看到的,Hyper-V 甚至可以用来运行本机 Windows 容器,这通常会造成混乱。
\n此外,docker-machine
是被取代的产品。
\n\n在 Docker v1.12 之前,Machine 是在 Mac 或 Windows 上运行 Docker 的唯一方法。从 beta 程序和 Docker v1.12 开始,适用于 Mac 的 Docker Desktop 和适用于 Windows 的 Docker Desktop 可作为本机应用程序使用,并且是较新台式机和笔记本电脑上此用例的更好选择。
\n
请参阅Linux 和 Windows 中的 Docker 容器,了解许多术语、技术和参考的高级概述。
\n小智 7
Windows 上对 Docker 的支持不是原生的,Docker 最初是为在 Linux 上运行而编写的。所以在 Windows 上运行 Docker CE 的要求是:
必须启用虚拟化,因为 docker-ce 在 Hyper-V 上创建了一个 VM。由于所有管理程序都需要启用硬件虚拟化,因此 Hyper-V 在这件事上也不例外。如果需要,Docker for Windows 安装程序将为您启用 Hyper-V,然后重新启动您的机器。
对于不支持硬件虚拟化的旧 Windows 系统,建议使用 Docker Toolbox,它使用 Oracle Virtualbox 来启动将托管 docker 容器而不是 Hyper-V 的 VM。
除了“Hyper-v 隔离”之外,Windows 还支持“进程隔离”。
Windows 上的进程隔离容器在没有额外虚拟化层的情况下运行(类似于您在 linux 上使用 docker 时可能使用的);我相信这就是 OP 在提到“本机”容器时所寻找的。
进程隔离支持仍然相当新,但最新版本的 Windows Server 2019 和 Windows 10 确实可以运行 Windows 容器,而无需 Hyper-v 虚拟主机的额外开销。需要注意的一件事是,您的 Windows 容器基础映像内核版本必须与主机上的内核版本相匹配。因此,您可能无法简单地使用在 hyper-v 上运行的完全相同的容器。
这是一个Windows 容器版本兼容性表,其中突出显示了哪些主机操作系统支持process
或hyperv
隔离。
尽管此^页面并未指明,但Windows 10 Update 1809 是第一个支持 Docker 进程隔离的更新,如Docker Engine Release Notes 中所述。
归档时间: |
|
查看次数: |
12568 次 |
最近记录: |