gpt4 book ai didi

powershell - 如何从 PowerShell 脚本调整 Windows 10 上的 Docker 桌面虚拟机的大小?

转载 作者:行者123 更新时间:2023-12-02 19:19:43 26 4
gpt4 key购买 nike

我正在尝试编写一个 PowerShell 脚本(使用 PS core 7.0)来安装和配置在我的团队使用的 Windows 10 机器上运行的 Kubernetes 集群。我有一个启动和配置集群的工作脚本,唯一的问题是我想(需要)确保 Docker Desktop VM 有足够的可用内存来同时在集群内运行我们的一些微服务。

我拼凑了一些代码来执行任务,它一直工作到最后一步,我试图让 docker 守护进程在重启后再次工作。一旦我运行命令来执行此操作,VM 就会重新配置回其先前的内存大小。

这是我必须执行调整大小的内容:

        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

注意:我找到了帖子@ How to restart docker for windows process in powershell?那是我得到了最后两行。

在进一步研究该问题时,我发现我可以改用以下单行,但我仍然遇到同样的问题,即一旦运行命令,内存大小就会恢复。
&$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine

如果我不运行 DockerCli.exe -SwitchDaemon 两次或 DockerCli.exe -SwitchLinuxEngine 一次,那么我会收到错误消息:

连接时出错:获取 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/json : open//./pipe/docker_engine: 系统找不到指定的文件。在 Window 的默认守护进程配置中
s,必须运行提升的 docker 客户端才能连接。此错误还可能表明 docker 守护程序未运行。

有没有更好的方法来调整 VM 内存大小或关闭并重新启动 docker 而不会导致更改被还原?

最佳答案

对于正在尝试相同事情或类似事情的其他人,我从 GitHub 上的 Docker Desktop for Windows Community 获得了提示,帮助我找到了解决方案。简而言之,建议是直接更改设置文件。我发现有效的是:

  • 停止 Docker 服务(有 2 个)
  • 更新设置文件 (@ ~\AppData\Roaming\Docker\settings.json)
  • 启动 Docker 服务
  • 将守护进程上下文切换到 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

    关于powershell - 如何从 PowerShell 脚本调整 Windows 10 上的 Docker 桌面虚拟机的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60750246/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com