diff --git a/docker-for-mac/troubleshoot.md b/docker-for-mac/troubleshoot.md
index df2dea63ac..b910377917 100644
--- a/docker-for-mac/troubleshoot.md
+++ b/docker-for-mac/troubleshoot.md
@@ -235,10 +235,6 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](install
Docker Machine environment in your shell or command window. Unset the
`DOCKER_HOST` environment variable and related variables. If you use bash, use the following command: `unset ${!DOCKER_*}`
-* Network connections fail if the macOS Firewall is set to "Block all incoming
- connections". You can enable the firewall, but `bootpd` must be allowed
- incoming connections so that the VM can get an IP address.
-
* For the `hello-world-nginx` example, Docker Desktop must be running to get to
the web server on `http://localhost/`. Make sure that the Docker icon is
displayed on the menu bar, and that you run the Docker commands in a shell that is connected to the Docker Desktop Engine.
@@ -292,21 +288,6 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](install
export DOCKER_HOST=unix:///var/run/docker.sock
```
-* `docker-compose` 1.7.1 performs DNS unnecessary lookups for
- `localunixsocket.local` which can take 5s to timeout on some networks. If
- `docker-compose` commands seem very slow but seem to speed up when the network
- is disabled, try appending `127.0.0.1 localunixsocket.local` to the file
- `/etc/hosts`. Alternatively you could create a plain-text TCP proxy on
- localhost:1234 using:
-
- ```
- docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:1234:1234 bobrik/socat TCP-LISTEN:1234,fork UNIX-CONNECT:/var/run/docker.sock
- ```
-
- and then `export DOCKER_HOST=tcp://localhost:1234`.
-
-
-
* There are a number of issues with the performance of directories bind-mounted
into containers. In particular, writes of small blocks, and traversals of large
directories are currently slow. Additionally, containers that perform large
@@ -322,38 +303,13 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](install
- PHP applications that use [Composer](https://getcomposer.org) to install
dependencies in a ```vendor``` folder
- As a work-around for this behavior, you can put vendor or third-party library
+ As a workaround for this behavior, you can put vendor or third-party library
directories in Docker volumes, perform temporary file system operations
outside of bind mounts, and use third-party tools like Unison or `rsync` to
synchronize between container directories and bind-mounted directories. We are
actively working on performance improvements using a number of different
techniques. To learn more, see the [topic on our roadmap](https://github.com/docker/roadmap/issues/7){: target="_blank" rel="noopener" class="_" }.
-* If your system does not have access to an NTP server, then after a hibernate
- the time seen by Docker Desktop may be considerably out of sync with the host.
- Furthermore, the time may slowly drift out of sync during use. To manually
- reset the time after hibernation, run:
-
- ```bash
- docker run --rm --privileged alpine hwclock -s
- ```
-
- Or, to resolve both issues, you can add the local clock as a low-priority
- (high stratum) fallback NTP time source for the host. To do this, edit the
- host's `/etc/ntp-restrict.conf` to add:
-
- ```
- server 127.127.1.1 # LCL, local clock
- fudge 127.127.1.1 stratum 12 # increase stratum
- ```
-
- Then restart the NTP service with:
-
- ```bash
- sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
- sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
- ```
-
## Support
This section contains information on how to get support on Docker Desktop.
diff --git a/docker-for-windows/images/hyperv-enabled.png b/docker-for-windows/images/hyperv-enabled.png
index 3d4002ffc1..37a2aae7f2 100644
Binary files a/docker-for-windows/images/hyperv-enabled.png and b/docker-for-windows/images/hyperv-enabled.png differ
diff --git a/docker-for-windows/images/troubleshoot.png b/docker-for-windows/images/troubleshoot.png
index d46f283ef2..a5d4483147 100644
Binary files a/docker-for-windows/images/troubleshoot.png and b/docker-for-windows/images/troubleshoot.png differ
diff --git a/docker-for-windows/images/wsl2-enabled.png b/docker-for-windows/images/wsl2-enabled.png
new file mode 100644
index 0000000000..38274d4eed
Binary files /dev/null and b/docker-for-windows/images/wsl2-enabled.png differ
diff --git a/docker-for-windows/troubleshoot.md b/docker-for-windows/troubleshoot.md
index 35c20b9d33..ca772cc5bd 100644
--- a/docker-for-windows/troubleshoot.md
+++ b/docker-for-windows/troubleshoot.md
@@ -110,7 +110,7 @@ Getting Started topic.
#### Permissions errors on data directories for shared volumes
-Docker Desktop sets permissions on [shared volumes](index.md#file-sharing)
+When sharing files from Windows, Docker Desktop sets permissions on [shared volumes](index.md#file-sharing)
to a default value of [0777](http://permissions-calculator.org/decode/0777/)
(`read`, `write`, `execute` permissions for `user` and for `group`).
@@ -131,8 +131,7 @@ application file is not found, access is denied to a volume mount, or a service
cannot start, such as when using [Docker Compose](../compose/gettingstarted.md),
you might need to enable [shared folders](index.md#file-sharing).
-Volume mounting requires shared folders for Linux containers (not for Windows
-containers). Click {: .inline}
+With the Hyper-V backend, mounting files from Windows requires shared folders for Linux containers. Click {: .inline}
and then **Settings** > **Shared Folders** and share the folder that contains the
Dockerfile and volume.
@@ -160,17 +159,28 @@ script](https://github.com/moby/moby/issues/24388).
### Virtualization
- Your machine must have the following features for Docker Desktop to function correctly:
+Your machine must have the following features for Docker Desktop to function correctly.
-1. [Hyper-V](https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-technology-overview)
- installed and working
+#### WSL 2 and Windows Home
-2. Virtualization enabled in the BIOS
+1. Virtual Machine Platform
+2. [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10){:target="_blank" rel="noopener" class="_"}
+3. Virtualization enabled in the BIOS
+4. Hypervisor enabled at Windows startup
-3. Hypervisor enabled at Windows startup
+{:width="600px"}
#### Hyper-V
+On Windows 10 Pro or Enterprise, you can also use Hyper-V with the following features enabled:
+
+1. [Hyper-V](https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-technology-overview){:target="_blank" rel="noopener" class="_"}
+ installed and working
+2. Virtualization enabled in the BIOS
+3. Hypervisor enabled at Windows startup
+
+{:width="600px"}
+
Docker Desktop requires Hyper-V as well as the Hyper-V Module for Windows
Powershell to be installed and enabled. The Docker Desktop installer enables
it for you.
@@ -180,19 +190,7 @@ Docker Desktop also needs two CPU hardware features to use Hyper-V: Virtualizati
To install Hyper-V manually, see [Install Hyper-V on Windows 10](https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/quick_start/walkthrough_install). A reboot is *required* after installation. If you install Hyper-V without rebooting, Docker Desktop does not work correctly.
From the start menu, type **Turn Windows features on or off** and press enter.
-In the subsequent screen, verify that Hyper-V is enabled:
-
-{:width="600px"}
-
-#### Hyper-V driver for Docker Machine
-
-The Docker Desktop installation includes the legacy tool Docker Machine which uses the old
-[`boot2docker.iso`](https://github.com/boot2docker/boot2docker){:target="_blank" rel="noopener" class="_"},
-and the [Microsoft Hyper-V driver](../machine/drivers/hyper-v.md) to create local
-virtual machines. _This is tangential to using Docker Desktop_, but if you want to use Docker Machine
-to create multiple local Virtual Machines (VMs), or to provision remote machines, see the
-[Docker Machine](../machine/index.md) topics. This is documented only for users looking for information about Docker Machine on Windows, which requires that Hyper-V is enabled, an external network switch is active, and referenced in the flags for the `docker-machine create` command
-as described in the [Docker Machine driver example](../machine/drivers/hyper-v.md#example).
+In the subsequent screen, verify that Hyper-V is enabled.
#### Virtualization must be enabled
@@ -216,43 +214,7 @@ Virtual Box) and video game installers disable hypervisor on boot. To reenable i
2. Run `bcdedit /set hypervisorlaunchtype auto`.
3. Restart Windows.
-### Networking and WiFi problems upon Docker Desktop for Windows install
-
-Some users may experience networking issues during install and startup of
-Docker Desktop. For example, upon install or auto-reboot, network adapters
-and/or WiFi may get disabled. In some scenarios, problems are due to having
-VirtualBox or its network adapters still installed, but in other scenarios this
-is not the case. See the GitHub issue [Enabling
-Hyper-V feature turns my wi-fi
-off](https://github.com/docker/for-win/issues/139).
-
-Here are some steps to take if you experience similar problems:
-
-1. Ensure **virtualization** is enabled, as described above in [Virtualization
- must be enabled](#virtualization-must-be-enabled).
-
-2. Ensure **Hyper-V** is installed and enabled, as described above in [Hyper-V
- must be enabled](#hyper-v-must-be-enabled).
-
-3. Ensure **DockerNAT** is enabled by checking the **Virtual Switch Manager**
- on the Actions tab on the right side of the **Hyper-V Manager**.
-
- 
-
-4. Set up an external network switch. If you plan at any point to use
- [Docker Machine](../machine/index.md) to set up multiple local VMs, you
- need this anyway, as described in the topic on the
- [Hyper-V driver for Docker Machine](../machine/drivers/hyper-v.md#example).
- You can replace `DockerNAT` with this switch.
-
-5. If previous steps fail to solve the problems, follow steps on the
- [Cleanup README](https://github.com/Microsoft/Virtualization-Documentation/blob/master/windows-server-container-tools/CleanupContainerHostNetworking/README.md).
-
- > Read the full description before you run the Windows cleanup script.
- >
- >The cleanup command has two flags, `-Cleanup` and
- >`-ForceDeleteAllSwitches`. Read the whole page before running any scripts,
- >especially warnings about `-ForceDeleteAllSwitches`. {: .warning}
+You can also refer to the [Microsoft TechNet article](https://social.technet.microsoft.com/Forums/en-US/ee5b1d6b-09e2-49f3-a52c-820aafc316f9/hyperv-doesnt-work-after-upgrade-to-windows-10-1809?forum=win10itprovirt){:target="_blank" rel="noopener" class="_"} on Code flow guard (CFG) settings.
### Windows containers and Windows Server
@@ -271,71 +233,6 @@ C:\Program Files\Docker\docker.exe:
See 'C:\Program Files\Docker\docker.exe run --help'.
```
-### Limitations of Windows containers for `localhost` and published ports
-
-Docker Desktop for Windows provides the option to switch Windows and Linux containers.
-If you are using Windows containers, keep in mind that there are some
-limitations with regard to networking due to the current implementation of
-Windows NAT (WinNAT). These limitations may potentially resolve as the Windows
-containers project evolves.
-
-Windows containers work with published ports on localhost beginning with Windows 10 1809 using Docker Desktop for Windows as well as Windows Server 2019 / 1809 using Docker EE.
-
-If you are working with a version prior to `Windows 10 18.09`, published ports on Windows containers have an issue with loopback to the localhost. You can only reach container endpoints from the host using the container's IP and port. With `Windows 10 18.09`, containers work with published ports on localhost.
-
-So, in a scenario where you use Docker to pull an image and run a webserver with
-a command like this:
-
-```shell
-> docker run -d -p 80:80 --name webserver nginx
-```
-
-Using `curl http://localhost`, or pointing your web browser at
-`http://localhost` does not display the `nginx` web page (as it would do with
-Linux containers).
-
-To reach a Windows container from the local host, you need to specify the IP
-address and port for the container that is running the service.
-
-You can get the container IP address by using [`docker inspect`](../engine/reference/commandline/inspect.md) with some `--format` options
-and the ID or name of the container. For the example above, the command would
-look like this, using the name we gave to the container (`webserver`) instead of
-the container ID:
-
-{% raw %}
-```bash
-$ docker inspect \
- --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
- webserver
-```
-{% endraw %}
-
-This gives you the IP address of the container, for example:
-
-{% raw %}
-```bash
-$ docker inspect \
- --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
- webserver
-
-172.17.0.2
-```
-{% endraw %}
-
-Now you can connect to the webserver by using `http://172.17.0.2:80` (or simply
-`http://172.17.0.2`, since port `80` is the default HTTP port.)
-
-For more information, see:
-
-* Docker Desktop for Windows issue on GitHub: [Port binding does not work for
- locahost](https://github.com/docker/for-win/issues/458)
-
-* [Published Ports on Windows Containers Don't Do
- Loopback](https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/)
-
-* [Windows NAT capabilities and
- limitations](https://blogs.technet.microsoft.com/virtualization/2016/05/25/windows-nat-winnat-capabilities-and-limitations/)
-
### 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
@@ -381,42 +278,10 @@ For best results, we recommend you run Docker Desktop natively on a Windows syst
settings in **Hardware > CPU & Memory > Advanced Settings > PMU
Virtualization**.
-#### Related issues
-
-Discussion thread on GitHub at [Docker for Windows issue
-267](https://github.com/docker/for-win/issues/267).
-
### Networking issues
IPv6 is not (yet) supported on Docker Desktop.
-Some users have reported problems connecting to Docker Hub on the Docker Desktop stable version. (See GitHub issue
-[22567](https://github.com/moby/moby/issues/22567).)
-
-Here is an example command and error message:
-
-```shell
-> docker run hello-world
-
-Unable to find image 'hello-world:latest' locally
-Pulling repository docker.io/library/hello-world
-C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error while pulling image: Get https://index.docker.io/v1/repositories/library/hello-world/images: dial tcp: lookup index.docker.io on 10.0.75.1:53: no such host.
-See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
-```
-
-As an immediate workaround to this problem, reset the DNS server to use the
-Google DNS fixed address: `8.8.8.8`. You can configure this through the **Settings**
-> **Network** dialog, as described in the topic [Network](index.md#network).
-Docker automatically restarts when you apply this setting, which could take some
-time.
-
-### NAT/IP configuration
-
-By default, Docker Desktop uses an internal network prefix of
-`10.0.75.0/24`. Should this clash with your normal network setup, you can change
-the prefix from the **Settings** menu. See the [Network](index.md#network) topic
-under [Settings](index.md#docker-settings).
-
## Workarounds
### Reboot