Hyper-V was unable to find a virtual switch with name "DockerNAT" - docker

Why do I keep getting this error. It has been days now googling and trying to find a solution for this issue. I have no clue how to resolve this can someone please help me understand how to fix this ?
docker version:
Version 2.0.0.3 (31259)
Channel: stable
Build: 8858db3
Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Hyper-V was unable to find a virtual switch with name "DockerNAT".
at New-Switch, <No file>: line 121
at <ScriptBlock>, <No file>: line 411
at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters) in C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeClient.cs:line 36
at Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean executeAfterStartCleanup) in C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 92
at Docker.Actions.<>c__DisplayClass19_0.<Start>b__0() in C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 74
at Docker.WPF.TaskQueue.<>c__DisplayClass19_0.<.ctor>b__1() in C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.WPF\TaskQueue.cs:line 59

I also spent days trying to install and get Docker working correctly on Windows. It turned out that the company's antivirus had rules to block the creation of virtual switches. Also, uninstalling Docker left things behind which prevents a fresh install. Here is what I suggest doing:
Uninstall Docker.
Disable antivirus.
Make sure '%userprofile%.docker' does not exist.
Enable 'Container' and 'Hyper-V' in 'Turn Windows features on or off'.
Install Docker for Windows.

After uninstalling and installing multiple times, despite 'Hyper-V' is enabled, I kept getting this error.
Running the MOFCOMP command and a reboot fixed this problem for me.
Running this command: (Command Prompt as administrator)
MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof
Then restart.

I had the same issue, here is what worked for me:
Turn off the Hyper-V setting in Control Panel->Programs and Features ->"Turn Windows features on or off"
Restart computer
After computer has been restarted, your existing docker instance will detect that your Hyper-V setting is turned off and will ask you if you want to allow docker to enable the Hyper-V feature
Click "Yes" to allow docker to enable the Hyper-V feature on your machine
From there allow docker to start and do its thing
After doing these steps the error went away and my docker instance was working again.
Hope this solves your issue. Enjoy!

Related

My Docker is crashing in Windows 10 Enterprise - (Docker hv-sock proxy (vsudd) is not reachable)

I am using a Windows 10 Enterprise edition system. I have installed version: 17.03.1-ce-rc1-win3 (10625) Channel: edge . The Docker machine was working fine until a few days back. Few days back I had disable Hyper-V in my system to use Oracle Virtual box to use Kubernetes and as a fact when hyper-V is disabled Docker won't run so I turned it back on and now it's crashing all the time and I am getting the below error.
[16:24:15.562][NamedPipeServer][Error ] Unable to execute Start: Docker hv-sock proxy (vsudd) is not reachable at Docker.Backend.ContainerEngine.Linux.ConnectToVsud(TaskCompletionSource`1 vmId)
at Docker.Backend.ContainerEngine.Linux.DoStart(Settings settings)
at Docker.Backend.ContainerEngine.Linux.Start(Settings settings)
at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass8_0.<Register>b__0(Object[] parameters)
at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object[] parameters)
[16:24:15.599][CrashReport ][Info ] Preparing package to send with the diagnostics
I uninstalled and installed Docker again but no vain and still getting error.
After a lot of tries with different combination the below final steps took care of my issue and my docker is running again.
Steps taken to resolve the issue :-
Uninstalled Docker from my system and deleted the .docker and 'Virtual Hard Disk' directory which usually has the mobyLinuXVM file.
Uninstalled Oracle virtual Box from my machine.
Restarted my system and went to BIOS and unchecked/disabled the Virtualization options and logged into my system to see if virtualization is disabled using command systemInfo in cmd prompt and it was disabled.
Restarted my system again and went to BIOS and checked/enabled the virtualization option and logged into my system and made the virtualization was enabled back.
Installed again the docker and it was a charm and it started running.
The above steps may sound lame but it worked.

How to run docker on windows 10?

I just installed Docker on Windows 10.
When I run Docker as an administrator I get the following error:
Unable to create: The running command stopped because the preference
variable "ErrorActionPreference" or common parameter is set to Stop: Hyper-V
encountered an error trying to access an object on computer 'WP2975' because
the object was not found. The object might have been deleted. Verify that
the Virtual Machine Management service on the computer is running.
at New-Switch, <No file>: line 121
at <ScriptBlock>, <No file>: line 411
at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters)
in C:\workspaces\stable 18.09.x\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeClient.cs:line 36
at Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean
showWelcomeWindow, Boolean executeAfterStartCleanup) in
C:\workspaces\stable-
18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 92
at Docker.Actions.<>c__DisplayClass19_0.<Start>b__0() in
C:\workspaces\stable-
18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 74
at Docker.WPF.TaskQueue.<>c__DisplayClass19_0.<.ctor>b__1() in
C:\workspaces\stable-
18.09.x\src\github.com\docker\pinata\win\src\Docker.WPF\TaskQueue.cs:line 59
I checked if Hyper-V is running on the computer.
I also did the following in powershell:
Ensure Windows Hyper-V featutes are enabled by running PowerShell cmdlet:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -Verbose
Ensure Windows Containers feature is enabled by running PowerShell cmdlet:
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -Verbose
Ensure Hypervisor is set to auto start in the Boot Configuration Database (BCD)
by running in elevated command prompt the command:
bcdedit /set hypervisorlaunchtype Auto
( Found it on: Failed to start the virtual machine 'MobyLinuxVM' because one of the Hyper-V components is not running )
But nothing helps.
I also reinstalled docker two times.
Please do make sure that the following three windows services are in running state
HV Host Service
Hyper-V Host Compute Service
Hyper-V Virtual Machine Management
If Windows 10 you're referring to has an ancient edition (lower then anniversary, i.e. 1607) there is no chance in hell you can get it working. To check version of your OS run 'winver'. The problem with these editions is that they don't support nested virtualization Docker require.
Now, it's not clear WHERE are you running your VM. If it's VMWare on your PC it should be relatively easy to fix, but if it's Cloud, can be a different story. The thing is that in Azure, for instance, not all VMs support nested virtualization, so if you hastened to provision a VM, it might be a problem. If you want to get it right, use v3 VM types and up (refer this article for more info).
In my case 'HV Host Service' didn't work as well, but fortunately I was able to resize a VM to a proper tier (v3) and voila! Docker started right away.

Can't start docker on windows

I continue to get the following error when trying to start docker on Windows 10 pro. my HyperV is turned on and running:
Version 18.04.0-ce-win62 (17151)
Channel: edge
e0a85f6
Any help would be appreciated!
Unable to create: The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Hyper-V encountered an error trying to access an object on computer 'C001715587' because the object was not found. The object might have been deleted. Verify that the Virtual Machine Management service on the computer is running.
at New-Switch, : line 117
at , : line 394
at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeClient.cs:line 36
at Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean executeAfterStartCleanup) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 75
at Docker.Actions.<>c__DisplayClass15_0.b__0() in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:line 59
at Docker.WPF.TaskQueue.<>c__DisplayClass19_0.<.ctor>b__1() in C:\gopath\src\github.com\docker\pinata\win\src\Docker.WPF\TaskQueue.cs:line 59
You may need to fix your "Control Flow Guard" settings for vmcompute.
(Be aware that CFG is an exploit-protection mechanism, so pay attention when changing it and understand why it exists.)
Open Windows Security
Open App & Browser control
Click Exploit protection settings
Switch to Program settings tab
Locate C:\WINDOWS\System32\vmcompute.exe in the list and expand it
Click Edit
Scroll down to Control flow guard (CFG) and uncheck Override system settings
Start vmcompute from powershell net start vmcompute (or alternately start the Hyper-V Host Compute Service from the system Services app)
Restart PC
Open Hyper-V as Administrator
Connect to Server, Local computer, OK
The above worked for me when I couldn't run docker, then I realized I couldn't connect to my local machine on hyper-v. This is what finally worked.
Try this. It's sorting the problem of many people.
cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon
I tried to run it from C:\Program Files\Docker\Docker\Docker Desktop.exe
And it worked.
Also, one more thing I added is I kept the Cisco AnyConnect VPN service running (although none of the VPNs were connected). I know this point sounds weird but I thought to share it.
If You, like me, already have an installed wsl2 distro on Your system (at the time You install Docker Desktop) and all the answers above did not help, than look if Your distro is actually running by hitting the command wsl -l -v
wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
If so, then shutdown Your wsl instance by running wsl -t Ubuntu-20.04 this fixed the issue on my system. Docker Desktop window came immediately up after the wsl instance was down.
I think the problem is that I already have a docker installed in this wsl instance.
If you facing
Unable to stop Hyper-V VM: Service 'Hyper-V Host Compute Service
(vmcompute)' cannot be started due to the following error: Cannot
start service vmcompute on computer '.'.
this error then follow the steps:
Open "Window Security"
Open "App & Browser control"
Click "Exploit protection settings" at the bottom
Switch to "Program settings" tab
Locate "C:\WINDOWS\System32\vmcompute.exe" in the list and expand it
Click "Edit"
Scroll down to "Code flow guard (CFG)" and uncheck "Override system settings"
Start vmcompute from powershell "net start vmcompute"
The fix for me was to enable virtualisation in my bios. It'll be in Advanced > CPU Configuration > SVM - make sure it's enabled

Docker for window giving message-Time out has expired and the operation has not been completed

I have been trying to setup Docker for window machine and to run Asp.Net core 2.0 application in the Docker. I have setup below items.
Widow 10.
Visual Studio 2017, Community version.
Installed Core 2.0.
I have created a sample Asp.Net Core2.0 application and chosen Docker to run this application.
Below are the details -
Default project setup reference image-
Asp.Net core2.0 project setup
Docker run status
Below is the details for the timeout issue.
Time out has expired and the operation has not been completed.
at System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout)
at Docker.Backend.Processes.WindowsDockerDaemon.TryToStartService(String args, Dictionary`2 env) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\Processes\WindowsDockerDaemon.cs:line 138
at Docker.Backend.ContainerEngine.Windows.DoStart(Settings settings, String daemonOptions) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Windows.cs:line 200
at Docker.Backend.ContainerEngine.Windows.Start(Settings settings, String daemonOptions) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Windows.cs:line 78
at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass9_0.<Register>b__0(Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeServer.cs:line 47
at Docker.Core.Pipe.Nam
Can anyone suggest what could be issue for the timeout, I have tried and reset the docker
I think maybe we have same problem
After many month, I found my problem
As you can see in Crash while switching from Linux to Windows containers , My problem is one bug from Docker Desktop, that panic.txt is readonly after I change this from forums docker guideline
The short answer is
Go to C:\ProgramData\Docker (Or any other location that data-root locate to it)
Right click on panic.txt → Properties
Uncheck ‘Read-Only’
My problem is resolved (very very thanks to Tomas Slaman)
We had the same issue. We had to uninstall docker for Windows, and re-install. But this time we did not check the box (on the installation screen) which said "enable windows containers". So we just did next -> next which means Linux containers will be used instead of Windows, even though installation is being done on a Windows machine. Installation and launch were successful after that.
I came across this and thought it necessary to confirm if virtualization is enabled on my system, as it being disabled could be the problem. Apparently, that was my problem.
So basically, since I had Hyper-V turned on already under "Turn Windows Features on or off" I simply ran the script on windows power-shell in admin mode:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
This forced a restart, after which I was fine.
Here is a reference guide to enabling on windows-10:
https://thebackroomtech.com/2019/03/11/how-to-enable-virtualization-in-windows-10/
Hope this helps.

Unable to start Docker in Windows 10 - Hyper-V error is thrown

I get the below error while starting of docker in Windows 10. Anyone can guide me to install docker correctly?
Unable to create: The running command stopped because the preference variable
"ErrorActionPreference" or common parameter is set to Stop: Hyper-V encountered
an error trying to access an object on computer 'XXXX' because the object was not
found. The object might have been deleted, or you might not have permission to
perform the task. Verify that the Virtual Machine Management service on the
computer is running. If the service is running, try to perform the task again by
using Run as Administrator.
at New-MobyLinuxVM, <No file>: line 242
at <ScriptBlock>, <No file>: line 362
at Docker.Backend.HyperV.RunScript(String action, Dictionary`2 parameters)
at Docker.Backend.ContainerEngine.Linux.Start(Settings settings)
at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass8_0.<Register>b__0(Object[] parameters)
at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object[] parameters)
Versions
OS : Windows 10 Enterprise
Version : 1607
OS Build : 14393.576
Docker Version : 1.12.3 (Stable)
Run “MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof” from command prompt in admin mode.
No need to restart machine as well after this execution, it worked for me.
I have also faced this same issue. I have solved it by removing all MobyLinuxVM virtual machines. Following are its steps.
Open Hyper-V Manager
Select all MobyLinuxVM from Virtual Machines.
Right click and delete all of these virtual machines.
Restart docker.
These steps has solved this issue on my system.
Assuming you are trying to run a Windows container:
Right click on the Docker system tray icon, then select “Switch to Windows Containers”.
It will eventually have you reboot the system, but will no longer attempt to run the MobyLinuxVm as mentioned in your error message.
If it helps anyone, I am on Apple hardware (MacOS) running a Windows 10 VM via Parallels. I also made sure that under my parallel settings > Processors and Memory > Advanced, I had Hypervision applications enabled.
This issue is very similar to this the another question Docker - The computer 'WINDOWS10-ON-SE' could not be resolved
See my answer at https://stackoverflow.com/a/45099242/279272
I was also facing the same issue but it was random in nature, I found it is due to some inaccessibility of network card by the docker start script. This inaccessibility further blocks the start up process of docker.
I found one hack and it is working fine on my windows machine
Hack
Open C:\Program Files\Docker\Docker\resources\mobylinux.ps1 with any editor in admin mode.
Find following code (around line 164)
$networkAdapter | Remove-NetIPAddress -Confirm:$false -ea SilentlyContinue
$networkAdapter | Set-NetIPInterface -Dhcp Disabled -ea SilentlyContinue
$networkAdapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress $switchAddress -PrefixLength ($SwitchSubnetMaskSize) -ea Stop | Out-Null
Add a return after line 165 in a new line like below and save the file.
$networkAdapter | Remove-NetIPAddress -Confirm:$false -ea SilentlyContinue
$networkAdapter | Set-NetIPInterface -Dhcp Disabled -ea SilentlyContinue
return
$networkAdapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress $switchAddress -PrefixLength ($SwitchSubnetMaskSize) -ea Stop | Out-Null
Now restart docker and after restart completion execute following commands in dos admin mode to setup the network card manually
netsh interface ipv4 set address name="vEthernet (DockerNAT)" static 10.0.75.1 255.255.255.0
You have to run this command everytime whenever you are doing system restart and docker completes start process (due to any reason).
TIP : create a batch file of this command and save somewhere handy.
Note: The ps hack would get undone by any docker update. so be aware...
to install docker, BIOS-level Hardware Virtualization support is required.
so you can do the following..
-Ensure that hardware virtualization support is turned on in the BIOS settings in your mother board settings when you start your computer, under (system security => virtualization technology VTX => enable it) then Save the BIOS settings and boot up the machine normally. then enable hyper v if it was not enabled by running this command in your powershell as an admin:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
For me updating windows 10 pro to version 1809 fixed the issue
On windows 10, I fixed the issue by executing the steps below:
French Windows version:
Close Docker Desktop
Go to "Contrôle des applications et du navigateur"
Click on "Paramètre d'exploit protection" under "Exploit protection"
Go to the tab "Paramètres du programme"
Search "C:\Windows\System32\vmcompute.exe" or "vmcompute.exe"
Click on update and untick all the checkboxes related to all the configurations and then apply
Run Docker Desktop again
English Windows version:
Close Docker Desktop
Go to "App & browser control"
Click on "Exploit protection settings" under "Exploit protection"
Go to the tab "Program settings"
Search "C:\Windows\System32\vmcompute.exe" or "vmcompute.exe"
Click on update and untick all the checkboxes related to all the configurations and then apply
Run Docker Desktop again
Hope this will help someone else.
when you starting windows and starting docker just a right click docker in right bottom bar and switch to windows container

Resources