前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何解决VMware与docker在win10下共存

如何解决VMware与docker在win10下共存

作者头像
剑指工控
发布2022-01-17 17:52:52
6.8K0
发布2022-01-17 17:52:52
举报
文章被收录于专栏:剑指工控
Vmware自带虚拟化内核,但是在win10中Docker的工作需要依赖Hyper-V,本质上是Hyper-v和Vmware内核之间的冲突,毕竟二者提供了相同的功能。

PS:

安装Hyper-V服务其实也不是一个简单的事情,尤其是当你的系统是win10家庭版的时候,需要多走点流程,但是也很简单:

win10 Home版启用Hyper-v

代码语言:javascript
复制
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

命名为XXX.cmd即可。点击运行,剩下的就是机器要求重启,按它的需求来就行了。

如何解决无法共存问题

开发过程中,我需要一会在VMware里、一会在docker里进行实验,冲突无法避免。

01修改bcd

方法一

直接贴解决方案:

1.当你想用VMware

代码语言:javascript
复制
bcdedit /set hypervisorlaunchtype off

2.当你想用Docker

代码语言:javascript
复制
bcdedit /set hypervisorlaunchtype auto

每次切换之后必须进行reboot。

这个方法下系统的功能和服务都不要管,也不要尝试手动去切换.

02启用两个引导,一个启用Hyper-V,一个不启用Hyper-V

方法二

主要就是用到了bcdedit 启动项配置

大概思路我写下:

(1)首先将Hyper-V通过程序和功能中打钩启用,这样Docker就是可用的,but VM的不行的

(2)复制一份启动项,将Hyper-V禁用(大概意思是这样,但不完全准确)这样就可以通过两种启动方式进入系统

(3)使用默认方式登录,则Docker可用VM不可用;使用复制的新的启动方式,Docker可用,VM竟然也可用(一开始我也是不信的,但就是可以)

以下具体操作给上来:

程序和功能,启用或关闭Windows功能,Hyper-V全打钩

以管理员身份打开cmd命令窗口(注意以下代码,分两次执行):

D1

win + X 开启命令行,注意:必须以管理员身份执行

代码语言:javascript
复制
bcdedit /copy {default} /d "Windows 10 Without Hyper-V"

以上命令得到输出 {xxxxxxxxxxxxxxxxxxx}

代码语言:javascript
复制
bcdedit /set {xxxxxxxxxxxxxxxxxxx} hypervisorlaunchtype off 

D2

继续命令行窗口(查看所有启动项):

代码语言:javascript
复制
bcdedit /enum

可以发现多了一个启动项出来。

重启电脑,再次开机的时候,会看到有两个启动选项

此时,选择(no Hyper-V)进入系统,你就会发现Docker与VM和谐相处了。

03升级Win10 2004以上或者LTSC 2021

终极解决方案

代码语言:javascript
复制
VMARE版本升级到15.5以上
WIN10升级到2004版本以上
Hyper-V为开启状态

安装wsl2 --windows下的Linux子系统。

让docker运行于WSL2系统中,这样就不影响与Vmware抢占Hyper-V了。

代码语言:javascript
复制
#用管理员模式启动PowerShell然后运行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Enable-WindowsOptionalFeature -Online -FeatureName $("VirtualMachinePlatform", "Microsoft-Windows-Subsystem-Linux")
这两个安装完成直接 重启 !!!!!!!!!重启!!!!!!
#这里的就是你安装的WSL1的名称
wsl --set-version <Distro> 2
wsl -l -v
#这时候会提示version为2

完成wsl配置

安装Docker Desktop for windows ,并在设置中启用 "Use the WSL2 based engine"

可能运行过程中弹出需要打wsl2的补丁,运行wsl_update_x64.msi,安装一下就行了。

最终状态

2022年1月

作者简介

Borje Zhou:

一个机械设计起身的自动化工程师,励志为自动化行业贴砖加瓦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档