Windows Docker deamon аварийно завершает работу, если к демону добавлены хосты. json - PullRequest
1 голос
/ 17 июня 2020

Я впервые работаю с docker. Обратите внимание, что я использую Docker Desktop на windows с WSL 2.

Я работаю с большим количеством устаревшего программного обеспечения, которому необходимо подключиться к демону docker для запуска новых контейнеров. В инструкции по установке этого программного обеспечения сказано, что мне нужно установить DOCKER_OPTS='-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock'. На данный момент я не нашел способа установить DOCKER_OPTS в windows, но добавление его к хостам должно работать.

Проблема, с которой я сталкиваюсь, возникает, когда я пытаюсь добавить хосты в C:\Users\<User>\.docker\daemon.json файл (или через ui) docker не запускается. Неважно, что я добавляю в объект hosts, просто объект hosts вызывает docker cra sh при запуске.

Насколько я понимаю, похоже, что это известная проблема, однако все решения, которые я могу найти, кажутся без ответа или для Linux, а не windows.

Я пробовал использовать команду -H, похоже, что-то не изменилось с командой.

Как мне добавить хосты к демону. json файл без docker сбоя или, по крайней мере, установить значение DOCKER_OPTS?

Я на: Docker версия 19.03.8, сборка afacb8b Windows Build 19041.329 WSL 2

Я просмотрел их.

DOCKER_OPTS не работают в файле конфигурации / etc / default / docker

Невозможно запустить docker после настройки хостов в демоне. json

Включить удаленный доступ Docker API на Windows Хост - Добавление демона. json breaks docker

Измените "hosts" / "-h" Docker на Windows в демоне. json

docker трассировка стека:

Docker.Core.DockerException:
Failed to start
   at Docker.LinuxkitDaemonStartup.<StartAsync>d__5.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\LinuxkitDaemonStartup.cs:line 59
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__23.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\LinuxWSL2Engine.cs:line 149
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 67
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 92
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.EngineStateMachine.<StartAsync>d__14.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\EngineStateMachine.cs:line 72
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.Engines.<RestartAsync>d__29.MoveNext() in C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\Engines.cs:line 274

1 Ответ

0 голосов
/ 31 июля 2020

У меня тоже возникла эта проблема. Мой текущий обходной путь - перенаправить на порт за пределами docker. Я запускаю эту команду в командной строке администратора:

netsh interface portproxy add v4tov4 listenport=2375 listenaddress=192.168.1.20 connectport=2375 connectaddress=127.0.0.1

Она даже остается после перезапуска, что вы можете проверить:

netsh interface portproxy show all

Хотя это не исправляет docker вылетает при редактировании файла хоста, это позволит вам проксировать хост демона на другой порт.

...