如何从PowerShell脚本调整Windows 10上Docker桌面虚拟机的大小?
我正在尝试编写一个PowerShell脚本(使用PS core 7.0)来安装和配置Kubernetes群集,该群集在我的团队使用的Windows 10计算机上运行。我有一个工作脚本来启动和配置集群唯一的问题是我想(需要)确保Docker Desktop VM有足够的内存,可以同时在集群内运行我们的一些微服务 我已经拼凑了一些代码来执行这个任务,它一直工作到最后一步,我尝试在重启后让docker守护进程再次工作。只要我运行这个命令,VM就会重新配置回它以前的内存大小 以下是我必须执行的调整大小操作:如何从PowerShell脚本调整Windows 10上Docker桌面虚拟机的大小?,powershell,docker,kind,Powershell,Docker,Kind,我正在尝试编写一个PowerShell脚本(使用PS core 7.0)来安装和配置Kubernetes群集,该群集在我的团队使用的Windows 10计算机上运行。我有一个工作脚本来启动和配置集群唯一的问题是我想(需要)确保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
注意:我找到了最后两行的帖子@
在进一步研究这个问题的过程中,我发现我可以使用下面的一行来代替,但我仍然存在同样的问题,即一旦命令运行,内存大小就会恢复
&$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine
如果我没有两次运行DockerCli.exe-SwitchDaemon或一次运行DockerCli.exe-SwitchLinuxEngine,则会出现以下错误:
连接期间出错:Get:open/./pipe/docker\u引擎:系统找不到指定的文件。在窗口上的默认守护程序配置中
s、 docker客户端必须提升运行才能连接。此错误还可能表示docker守护程序未运行
是否有更好的方法来调整VM内存的大小,或者关闭并重新启动docker而不导致更改被还原?对于尝试相同操作或类似操作的其他人,我从GitHub上的docker Desktop For Windows社区得到了一个提示,帮助我找到了解决方案。简而言之,建议直接更改设置文件。我发现有效的方法是:
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