我可以在虚拟机中运行 Docker 吗?

Posted

技术标签:

【中文标题】我可以在虚拟机中运行 Docker 吗?【英文标题】:Can I run Docker in a Virtual Machine? 【发布时间】:2017-02-04 19:48:23 【问题描述】:

我尝试在虚拟机上运行 Docker。

Host : MacBook 
VM : Parallels Windows 7

并且出现错误:

有可能吗?

【问题讨论】:

请您提供更多信息,因为这就像您尝试在其他虚拟机中的虚拟机上启动一样。 这就像盗梦空间 【参考方案1】:

如果 VM 是 Linux,您可以毫无问题地执行此操作 - 在 Linux 上,Docker 本质上是一个运行良好的 chroot。因此,Linux docker 不是虚拟化。

在 Windows 的情况下,这并不容易。 Windows Docker 在内部使用 Hyper-V 来模拟容器。这意味着只有在可以使用嵌套虚拟化的情况下才能运行:

    在您的主机上运行 Windows 虚拟机 在您的 Windows VM 中,运行 HyperV HyperV 由安装在虚拟 Windows 上的 docker 管理。

我尝试了 qemu/kvm、virtualbox 和 vmware player。我对它们进行了深入而强大的配置,我已经破解了它们,我尽了一切可能。只有最后一个工作(VMWare)。

有很大的速度成本,但它可能对在 Linux 上进行开发,然后在 Windows 配置上进行试用测试有用。

您将需要大量内存。至少16G。 32G更好。一个相对有用的配置是:

32GB 物理 RAM 用于物理主机 12GB 虚拟 RAM 用于在其上运行的 Windows VM 8GB 虚拟 RAM在 Windows VM 内用于 HyperV Linux 主机。

有时它会有点问题,但只有你的 HyperV 会崩溃,你的虚拟 Win 或者你的主机不会。在 Windows 机器上测试 docker 容器是可以的,你在 Linux 上开发的。不要以这种方式创建关键任务服务器。 :-)

【讨论】:

“如果 VM 是 Linux,您可以毫无问题地执行此操作”。你的意思是没有性能成本?如果是这样,您是否有可能提供一些解释这一点的链接? 没有说服力。 @MarinosAn 我真的不明白,它应该有什么说服力。这是事实。 @MarinosAn 这令人信服,因为 Windows 很烂 :) Windows 本身需要大量资源,如果你设法在其中运行 vm,你的成本就会增加...... @Webman 抱歉,我无法真正理解您的问题,但将其发布为问题(单击“”)按钮可能会为您提供更多帮助。【参考方案2】:

您在您的 Windows 虚拟机中使用 Docker Machine,它实际上将在您的 Mac 上的 Windows 虚拟机中创建一个 Linux 虚拟机。您可以这样做,但您需要 enable nested virtualization - 我不确定您是否可以在 Parallels 7 中这样做。

您可以直接在 Mac 上运行 Docker Machine,use Parallels to create the Linux VM - 这意味着 Docker 在您 Mac 上的 Linux VM 中运行,您不需要嵌套虚拟化。

或者如果您的操作系统支持,最好使用Docker for Mac,它是最新产品,并且比 Docker Machine 具有更好的主机集成。

【讨论】:

并行 11 / 和虚拟窗口 7。不并行 7。 谢谢。并将尝试嵌套虚拟化。对不起,我的英文写得不太好...... 不同意“主机集成比 Docker Machine 好得多”。缺少--network host 至少是 Mac/Windows 的“本机”Docker 的一个缺点 还要注意,嵌套虚拟化也需要 CPU 支持,而不仅仅是主机操作系统。【参考方案3】:

如果您要使用 Windows 10 专业版或企业版和 Hyper-V,那么您只需启用 nested virtualization。在您的主机上,只需运行(关闭您的客人):

> Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

现在您可以正常启动访客并运行 Docker Desktop。

【讨论】:

【参考方案4】:

工作得很好。基础操作系统 win 10 pro 和 VirtualBox 版本:6.1 和 vagrant with ubuntu 20.04。 Using vagrant box 关注 docker instructions。使用vagrant public network 无需端口转发,所有应用都可以访问。

【讨论】:

以上是关于我可以在虚拟机中运行 Docker 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Grails 监视文件在 Vagrant 虚拟机中运行的 Docker 容器中不起作用

docker容器中运行windows虚拟机

如何卸载虚拟机中VMware tools

请问如何修改虚拟机中的硬件信息?

Proxmox VE LXC容器上运行Docker

虚拟机中docker承载的微服务注册到nacos无法访问问题