You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Ubuntu宿主机的Windows Server 2016虚拟机中安装Docker?

能否在你的环境中安装Docker?

答案是可以,但得搞定几个关键配置,我给你一步步捋清楚:

1. 先明白问题出在哪

你碰到的“必须在BIOS中启用虚拟化”提示,核心原因是Docker for Windows依赖Hyper-V(或者Windows容器功能),而Hyper-V需要你的Windows虚拟机具备嵌套虚拟化能力——简单说就是让宿主机的虚拟化权限透传给虚拟机。现在任务管理器显示虚拟化不可用,说明你的Windows虚拟机还没拿到这个权限,光在虚拟机里开Hyper-V没用。

2. 必须完成的配置步骤

第一步:确认物理机BIOS的虚拟化已开启

先确保你装Ubuntu的那台物理机器,BIOS里已经开了Intel VT-x(如果是AMD CPU就是AMD-V),这是所有虚拟化的基础,宿主机本身没开的话,虚拟机根本拿不到虚拟化能力。

第二步:给VirtualBox的Windows虚拟机开嵌套虚拟化

VirtualBox从6.0版本开始支持Intel CPU的嵌套虚拟化(AMD的支持稍晚),操作步骤如下:

  • 先把你的Windows虚拟机彻底关掉
  • 在Ubuntu宿主机的终端里执行这条命令(把引号里的名字换成你实际的虚拟机名称):
    VBoxManage modifyvm "你的Windows虚拟机名称" --nested-hw-virt on
    
  • 重新启动Windows虚拟机

第三步:验证虚拟化状态

启动Windows Server后,打开任务管理器→切换到“性能”标签,看CPU区域的“虚拟化”是否显示“已启用”。要是显示了,说明嵌套虚拟化生效了。

第四步:重新安装Docker for Windows

这时候再去装Docker for Windows就没问题了,安装过程会自动配置Hyper-V相关组件(之前开了Hyper-V也不影响),安装完成后Docker就能正常启动。

3. 备选方案:嵌套虚拟化搞不定怎么办?

如果你的CPU不支持嵌套虚拟化,或者VirtualBox配置始终没成功,还可以试试纯Windows容器模式(不需要Hyper-V):

  • 打开Windows Server的“服务器管理器”→添加角色和功能,勾选“容器”功能完成安装
  • 下载安装Docker EE(企业版),Windows Server上的Docker EE支持纯容器模式,不需要依赖Hyper-V

几个小提醒

  • Ubuntu 16.04版本比较老,建议把VirtualBox更到最新的稳定版(比如6.x或7.x),旧版本可能不支持嵌套虚拟化
  • 如果是AMD CPU,VirtualBox对嵌套虚拟化的支持有限,得确认你的VirtualBox版本是否支持AMD的嵌套虚拟化

内容的提问来源于stack exchange,提问作者modeller

火山引擎 最新活动