我正在尝试编写一个 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:打开 //./pipe/docker_engine:系统找不到指定的文件。在 Windows 上的默认守护程序配置中,docker 客户端必须运行提升才能连接。此错误还可能表明 docker 守护程序未运行。
有没有更好的方法来调整 VM 内存的大小或关闭并重新启动 docker 而不会导致更改被还原?