Как изменить размер виртуальной машины Docker Desktop на Windows 10 из сценария PowerShell? - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь написать сценарий PowerShell (с использованием PS core 7.0) для установки и настройки кластера Kubernetes, работающего на Kind, на Windows 10 машинах, используемых моими командами. У меня есть рабочий сценарий для запуска и настройки кластера, единственная проблема заключается в том, что я хотел бы (должен) убедиться, что на настольной виртуальной машине Docker достаточно памяти, чтобы одновременно запустить несколько наших микро-служб внутри кластера. время.

Я собрал немного кода для выполнения задачи, и он работает до самого последнего шага, где я пытаюсь заставить демона docker снова работать после перезапуска. Как только я запускаю команду, чтобы сделать это, виртуальная машина переконфигурируется обратно к своему предыдущему объему памяти.

Вот что мне нужно для изменения размера:

        Stop-Service *docker*

    Get-VM DockerDesktopVM | Stop-VM 
    Get-VM DockerDesktopVM | Set-VMMemory -StartupBytes 12888MB
    Get-VM DockerDesktopVM | Start-VM

    Start-Service *docker*

    # https://stackoverflow.com/questions/51760214/how-to-restart-docker-for-windows-process-in-powershell
    &$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon
    &$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon

Примечание: я нашел пост @ Как перезапустить docker для windows процесса в powershell? где я получил последние 2 строки.

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

&$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine

Если я не запускаю DockerCli.exe -SwitchDaemon дважды или DockerCli.exe -SwitchLinuxEngine один раз, то я получаю ошибку:

ошибка при соединении: Get http: // % 2F% 2F.% 2Fpipe% 2Fdocker_engine / v1.40 / container / json: открыть //./pipe/docker_engine: Системе не удается найти указанный файл. В конфигурации демона по умолчанию в Window s клиент docker должен быть запущен с повышенными правами для подключения. Эта ошибка также может указывать на то, что демон docker не работает.

Есть ли лучший способ go относительно изменения размера памяти виртуальной машины или выключения и перезапуска docker без изменения быть возвращенным?

1 Ответ

0 голосов
/ 20 марта 2020

Для тех, кто пытается сделать то же самое или что-то подобное, я получил подсказку от сообщества Docker Desktop для Windows на GitHub, которое помогло мне найти решение. В двух словах, рекомендация состояла в том, чтобы просто изменить файл настроек напрямую. Я обнаружил, что работал:

  1. Остановка Docker Служб (их 2)
  2. Обновление файла настроек (@ ~ \ AppData \ Roaming \ Docker \ settings . json)
  3. Запустите Docker Службы
  4. Переключите контекст демона на Linux (То же, что и раньше, но, похоже, нужно подтолкнуть его после перезапуск служб).

Вот PowerShell:

 Stop-Service *docker*
 $settingsFile = "$env:APPDATA\Docker\settings.json"
 $settings = Get-Content $settingsFile | ConvertFrom-Json
 $settings.memoryMiB = 8192
 $settings | ConvertTo-Json | Set-Content $settingsFile
 Start-Service *docker*        
 &$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...