Как устранить ошибки докера в windows "Failed to deploy distro docker-desktop to"?
После запуска docker desktop потребовалось обновить WSL2 по ссылке. Я обновил его, всё стало работать нормально. Я нажал на знак докера в трее, выбрал пункт "Learn", после чего появилась ошибка. Я перезагрузил компьютер, но ошибка стала появляться при каждой попытке запустить docker desktop
Конец лог-файла
stdout: :;NG8B5 DC=:F8N W i n d o w s 4;O ?;0BD>@<K 28@BC0;L=KE <0H8= 8 C1548B5AL 2 B><, GB> 2 B I O S 2:;NG5=0 28@BC0;870F8O.
>?>;=8B5;L=K5 A2545=8O A<. =0 AB@0=8F5 h t t p s : / / a k a . m s / w s l 2 - i n s t a l l
stderr:
в Docker.Core.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Core\WslCommand.cs:строка 119
в Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:строка 169
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:строка 78
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__24.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\LinuxWSL2Engine.cs:строка 94
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:строка 29
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:строка 67
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:строка 92
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.ApiServices.StateMachines.EngineStateMachine.<StartAsync>d__14.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\EngineStateMachine.cs:строка 72
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в Docker.Engines.Engines.<StartAsync>d__24.MoveNext() в C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\Engines.cs:строка 109)
[21:21:53.880][Diagnostics ][Info ] Uploading diagnostics 57797EA8-0B27-40F8-AE92-A32C3ED3C3A4/20200826181057
[21:21:55.989][Diagnostics ][Info ] Uploaded succesfully diagnostics 57797EA8-0B27-40F8-AE92-A32C3ED3C3A4/20200826181057
[21:22:43.523][ErrorReportWindow ][Info ] Open logs
Также при запуске в консоли команды docker ps появляется ошибка
System.InvalidOperationException: Failed to deploy distro docker-desktop to C:\Users\lari\AppData\Local\Docker\wsl\distro: exit code: -1 stdout: :;NG8B5
Ответы (4 шт):
Это открытый тикет на GitHub'е Doker'a. Однозначного решения пока нет. Есть несколько вариантов - остановить Hyper-V, закрыть процессы слушающие порт 53, остановить процесс dockerd.exe
stdout: :;NG8B5 DC=:F8N W i n d o w s 4;O ?;0BD>@<K 28@BC0;L=KE <0H8= 8 C1548B5AL 2 B><, GB> 2 B I O S 2:;NG5=0 28@BC0;870F8O.
Это не имеет отношения к открытым тикетам на GitHub, портам или HyperV. Просто не включена виртуализация на машине где запускается docker. Чтобы увидеть не локализированную ошибку надо запустить докер в системе под английской локализацией.
stdout: Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
Мне помогло удаление файла %USERPROFILE%/.wslconfig. Пробовал всячески модифицировать параметры в файле, но на рабочей машине докер ни в какую не взлетал с этим файлом. Не удалось выяснить почему
Заменил содержимое .wslconfig на это:
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=2GB
# Sets the VM to use two virtual processors
processors=2
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=2GB
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false
# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true
# Disables nested virtualization
nestedVirtualization=false
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true