Restart docker Windows 10 command line
This is with more recent versions of Docker for Windows Desktop (Docker Community Edition 2.0.0.3 2019-02-15)
net stop dockernet stop com.docker.servicetaskkill /IM "dockerd.exe" /Ftaskkill /IM "Docker for Windows.exe" /Fnet start dockernet start com.docker.service"c:\program files\docker\docker\Docker for Windows.exe"
If you can use Powershell as the windows command line, you can get a more controlled and correct result (based on @sabujp's answer). This is also using Docker Desktop 2.1.0.1 (current as of 2019-08-19).
Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Restarting docker"foreach($svc in (Get-Service | Where-Object {$_.name -ilike "*docker*" -and $_.Status -ieq "Running"})){ $svc | Stop-Service -ErrorAction Continue -Confirm:$false -Force $svc.WaitForStatus('Stopped','00:00:20')}Get-Process | Where-Object {$_.Name -ilike "*docker*"} | Stop-Process -ErrorAction Continue -Confirm:$false -Forceforeach($svc in (Get-Service | Where-Object {$_.name -ilike "*docker*" -and $_.Status -ieq "Stopped"} )){ $svc | Start-Service $svc.WaitForStatus('Running','00:00:20')}Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Starting Docker Desktop"& "C:\Program Files\Docker\Docker\Docker Desktop.exe"$startTimeout = [DateTime]::Now.AddSeconds(90)$timeoutHit = $truewhile ((Get-Date) -le $startTimeout){ Start-Sleep -Seconds 10 $ErrorActionPreference = 'Continue' try { $info = (docker info) Write-Verbose "$((Get-Date).ToString("HH:mm:ss")) - `tDocker info executed. Is Error?: $($info -ilike "*error*"). Result was: $info" if ($info -ilike "*error*") { Write-Verbose "$((Get-Date).ToString("HH:mm:ss")) - `tDocker info had an error. throwing..." throw "Error running info command $info" } $timeoutHit = $false break } catch { if (($_ -ilike "*error during connect*") -or ($_ -ilike "*errors pretty printing info*") -or ($_ -ilike "*Error running info command*")) { Write-Output "$((Get-Date).ToString("HH:mm:ss")) -`t Docker Desktop startup not yet completed, waiting and checking again" } else { Write-Output "Unexpected Error: `n $_" return } } $ErrorActionPreference = 'Stop'}if ($timeoutHit -eq $true){ throw "Timeout hit waiting for docker to startup"}Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Docker restarted"