Update the Desktop docs on nested virt (#14775)

* desktop: can also use Linux for Linux containers

Now that we've released Docker Desktop for Linux!

Signed-off-by: David Scott <dave.scott@docker.com>

* desktop: link to Microsoft's nested Hyper-V docs

Signed-off-by: David Scott <dave.scott@docker.com>

* desktop: document how to enable nested Hyper-V

Signed-off-by: David Scott <dave.scott@docker.com>

* desktop: remove outdated comment about 60s timeouts

The timeout is now 10 minutes which is effectively infinite. Although
nested virtualization will be slower, it's the same as having a busy
machine.

Signed-off-by: David Scott <dave.scott@docker.com>

* Update desktop/windows/troubleshoot.md

Co-authored-by: Allie Sadler <102604716+aevesdocker@users.noreply.github.com>
This commit is contained in:
David Scott 2022-05-19 13:55:12 +01:00 committed by GitHub
parent cd5103f170
commit 0b100e25c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 14 deletions

View File

@ -344,18 +344,29 @@ C:\Program Files\Docker\docker.exe:
### Running Docker Desktop in nested virtualization scenarios
Docker Desktop can run inside a Windows 10 VM running on apps like Parallels or VMware Fusion on a Mac provided that the VM is properly configured. However, problems and intermittent failures may still occur due to the way these apps virtualize the hardware. For these reasons, _**Docker Desktop is not supported in nested virtualization scenarios**_. It might work
Docker Desktop can run inside a Hyper-V VM, see
[Microsoft's nested virtualization user guide](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization) for more information.
Docker Desktop can also run inside a Windows 10 VM running on apps like Parallels or VMware Fusion on a Mac provided that the VM is properly configured.
However, problems and intermittent failures may still occur due to the way these apps virtualize the hardware. For these reasons, _**Docker Desktop is not supported in nested virtualization scenarios**_. It might work
in some cases, and not in others.
For best results, we recommend you run Docker Desktop natively on a Windows system (to work with Windows or Linux containers), or on Mac to work with Linux containers.
For best results, we recommend you run Docker Desktop natively on a Windows system (to work with Windows or Linux containers), or on Mac or Linux to work with Linux containers.
#### If you still want to use nested virtualization
* Make sure nested virtualization support is enabled in VMWare or Parallels.
* If using Hyper-V, make sure nested virtualization support is enabled for the
Windows VM by running the following powershell as Administrator:
```none
Set-VMProcessor -VMName <Windows VM Name> -ExposeVirtualizationExtensions $true
```
* If using VMware or Parallels, make sure nested virtualization support is enabled.
Check the settings in **Hardware > CPU & Memory > Advanced Options > Enable
nested virtualization** (the exact menu sequence might vary slightly).
* Configure your VM with at least 2 CPUs and sufficient memory to run your
* Configure your Windows VM with at least 2 CPUs and sufficient memory to run your
workloads.
* Make sure your system is more or less idle.
@ -365,19 +376,12 @@ For best results, we recommend you run Docker Desktop natively on a Windows syst
* The processor you have may also be relevant. For example, Westmere based Mac
Pros have some additional hardware virtualization features over Nehalem based
Mac Pros and so do newer generations of Intel processors.
Mac Pros and so do newer generations of Intel processors. For Hyper-V, check
[Microsoft's nested virtualization user guide](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization)
to verify the host OS version is supported on your hardware.
#### Typical failures we see with nested virtualization
* Slow boot time of the Linux VM. If you look in the logs and find some entries
prefixed with `Moby`. On real hardware, it takes 5-10 seconds to boot the
Linux VM; roughly the time between the `Connected` log entry and the `*
Starting Docker ... [ ok ]` log entry. If you boot the Linux VM inside a
Windows VM, this may take considerably longer. We have a timeout of 60s or so.
If the VM hasn't started by that time, we retry. If the retry fails we print
an error. You can sometimes work around this by providing more resources to
the Windows VM.
* Sometimes the VM fails to boot when Linux tries to calibrate the time stamp
counter (TSC). This process is quite timing sensitive and may fail when
executed inside a VM which itself runs inside a VM. CPU utilization is also