Art*_*yom 8 linux windows virtualization virtualbox docker
主机系统是 Archlinux。我想开发需要运行 Windows docker 容器的 .NET 4.6.1 应用程序。所以我在VirtualBox下运行Win10。然后我在 Win10 中安装 Docker 以运行 Windows docker 容器。Linux -> VirtualBox -> Win10 -> Docker -> Windows docker 容器 -> 要运行的应用程序。
或者更具体地说,VirtualBox 是否支持 Windows 10 的 WSL 2 虚拟化(自 2020 年 5 月更新后可用)?
在 VirtualBox 上的 VM 设置中,我选中了半虚拟化下的“启用嵌套 VT-x/AMD-V”、“Hyper-V”和“启用嵌套分页”。然后我运行我的 Win10 Pro 安装。Speccy 显示“虚拟化:支持,已启用”。安装并运行 WSL 2 以及 Hyper-V 和虚拟机平台功能。当我运行 Docker 时,它失败并显示以下错误。
System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:\Users\WinUser\AppData\Local\Docker\wsl\distro: exit code: -1
stdout: Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/wsl2-install
stderr:
at Docker.Core.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Core\WslCommand.cs:line 119
at Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__16.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:line 142
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__6.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:line 44
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__23.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\LinuxWSL2Engine.cs:line 91
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 67
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 92
Run Code Online (Sandbox Code Playgroud)
更新。当我选择 VirtualBox 机器 KVM 或 Hyper-V 进行半虚拟化时,Docker 报告禁用了虚拟化。Windows下的任务管理器显示是虚拟机。当我为半虚拟化选择 None 时,Windows 显示它不是虚拟机和虚拟化启用(在任务管理器中),但 Docker 报告“硬件辅助虚拟化和数据执行保护必须在 BIOS 中启用”(在 Win 中启用这些功能:Virtual机器平台、Hyper-V、WSL)。
我的机器是 Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz
VirtualBox 版本为 6.1.10 r138449。
在 VMWare 15.5.6 下它可以工作(Win10 -> Docker)。
Docker for Windows 需要启用 Hyper-V,因为它使 Mobylinux 能够运行基于 Linux 的容器,并且启用后您无法运行 VMWare Workstation 或 Virtual Box。
如果您想在虚拟机上运行 Docker,请取消选中 Hyper-V 框并创建所需 Linux 的虚拟机(例如 ArchLinux、centOS 等),然后在所述 Linux 虚拟机上安装 Docker 来运行/部署容器。
要运行 Windows 容器,您必须从托盘图标更改 docker 设置,并选择允许 Windows 本机容器的设置,请参阅图像以更改为 Windows 容器。之后,您可以像这里一样部署 Windows 容器。
您也可以看看这个帖子。
| 归档时间: |
|
| 查看次数: |
4953 次 |
| 最近记录: |