Hyper-V + WSL2 + Docker 问题记录

本文介绍如何通过命令行工具bcdedit启用或关闭Hyper-V,并提供了修改Windows Linux子系统2(WLS2)镜像位置的方法。此外,还包含了处理Docker Desktop迁移及解决常见启动异常的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令行启用和关闭 Hyper-V

# 启用
bcdedit /set hypervisorlaunchtype auto
# 关闭
bcdedit /set hypervisorlaunchtype off

开机时选择是否启用 Hyper-V

管理员运行 CMD 或 PowerShell。

# 创建当前启动项(系统)的副本
bcdedit /copy {current} /d "Windows 10 No Hyper-V"
已将该项成功复制到 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}# 设置启动项的选项值
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} hypervisorlaunchtype off

需要删除启动项的话:

# 查看启动项
bcdedit /enum
# 删除启动项
bcdedit /delete {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

修改 WLS2 镜像位置

docker-desktop 是发行版,存储在 %LOCALAPPDATA%/Docker/wsl/distro,docker-desktop-data 是数据,存储在 %LOCALAPPDATA%/Docker/wsl/data

退出 Docker Desktop

# 查看已安装的子系统
wsl -l -v --all
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
# 关闭 WLS
wsl --shutdown
# 将子系统导出到指定位置
wsl --export docker-desktop C:\Users\duanluan\Desktop\docker-desktop.tar
wsl --export docker-desktop-data C:\Users\duanluan\Desktop\docker-desktop-data.tar
# 注销子系统
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
# 将之前导出的子系统导入到新目录,当然得先创建新目录的文件夹
wsl --import docker-desktop D:\Cache\wsl\Docker\distro C:\Users\duanluan\Desktop\docker-desktop.tar --version 2
wsl --import docker-desktop-data D:\Cache\wsl\Docker\data C:\Users\duanluan\Desktop\docker-desktop-data.tar --version 2

启动 Docker Desktop 并删除之前导出的 tar 文件。

启动异常

Failed to set version to docker-desktop: exit code: -1

netsh winsock reset

导入 dmp 文件到 oracle 容器

# 复制文件至容器
docker cp C:\Users\duanluan\Desktop\xxx.dmp 52eabab26311:/home
# 进入容器
docker exec -it 52eabab26311 /bin/bash
# 导入
imp 用户名/密码 file=/home/xxx.dmp full=y ignore=y

参考资料

### Windows 上 Docker 使用 WSL2Hyper-V 的选择 在 Windows 平台上部署 Docker 时,可以选择基于 WSL 2 (Windows Subsystem for Linux 2) 或者 Hyper-V 技术来运行容器。这两种技术各有优劣,在不同场景下的适用情况也有所不同。 #### WSL 2 特点及优势 WSL 2 提供了一个完整的 Linux 内核兼容层,允许直接在 Windows 中高效执行 Linux 命令行工具和服务而无需额外设置虚拟机环境。对于希望简化开发流程并减少资源占用的用户来说,这是一个理想的选择[^1]。 - **性能提升**:相较于早期版本的 WSL,它提供了更好的文件访问速度以及更全面的功能支持。 - **易于集成**:可以轻松地在同一台计算机上同时使用 Windows 应用程序和 Linux 工具链。 - **硬件需求较低**:相比起完全依赖于 Hypervisor 架构的方式,其对物理内存和其他计算资源的要求相对较小。 #### Hyper-V 方案概述 另一方面,Hyper-V 是微软自家提供的 Type 1 虚拟化平台,能够创建独立的操作系统实例作为来宾操作系统运行。当选用此模式安装 Docker Desktop 时,则意味着将通过 MobyLinuxVM 来承载所有的容器操作[^2]。 - **隔离性强**:由于每个容器都在自己的轻量级 VM 内部运作,因此安全性更高;同时也便于管理多租户或多项目间的资源共享问题- **功能完备**:除了基本的容器编排外,还支持 Kubernetes 集群等功能扩展,适合企业级应用部署。 - **灵活性高**:可以根据实际业务负载动态调整分配给各个虚拟机的核心数、RAM 大小等参数设定。 #### 如何做出决策? 如果用户的主机已经启用了 Hyper-V 功能,并且计划长期从事涉及复杂网络配置或是大规模分布式系统的构建工作,那么继续沿用现有的基础设施可能是更为稳妥的做法。然而,考虑到越来越多的新特性正在向 WSL 2 移植优化的趋势,再加上后者所具备的一系列便利之处——比如更快的速度响应时间、更低的学习曲线等等因素的影响下,除非有特殊理由坚持采用传统方法论之外,一般建议优先考虑迁移到新的架构上来体验更加流畅便捷的服务[^4]。 ```bash # 检查当前是否已启用 WSL 2 wsl --list --verbose ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值