如何让 Mac 上的 Docker 桌面指向 VM 映像的新位置?

How to get Docker Desktop on Mac to point to new location of VM Image?

Docker Desktop 支持在需要时将其使用的 VM 映像移动到另一个驱动器上。在我的 Mac Mini (2018) 上,我已将它移至外部 SSD,以便将其扩大到超出内部存储允许的范围。

外部 SSD 被命名为“Extra Space”,当我也尝试将 SSD 用于其他非 Docker 开发并发现其中一些Ruby 我使用的 Gem 在路径名中有 spaces 的问题。

我决定我必须将驱动器重命名为“ExtraSpace”(没有“extra”space),但是 Docker 无法找到它虚拟机映像。我无法使用内置的位置选择器(“首选项”->“资源”->“高级”->“磁盘映像位置”),因为该工具假定它将图像从一个位置移动到另一个位置,但在我的情况是图像没有被移动,只有现有图像的路径在改变。

我查看了~/Library/Containers/com.docker.desktop/中的Docker配置,找到了Library/Containers/com.docker.docker/Data/vms/0/hyperkit.json中图片的路径。我尝试在那里更改它,但是 Docker 桌面无法启动。

在错误日志中,我发现了很多这样的消息:

time="2021-10-31T15:06:43-04:00" level=error msg="(5487d9bc) 4ecbf40e-BackendAPI S->C f68f0c84-DriverCMD GET /vm/disk (925.402µs): mkdir /Volumes/Extra Space: permission denied"
common/cmd/com.docker.backend/internal/handlers.(*VMInitHandler).VMDiskInfo(0x58c13b8, {0x58b94a0, 0xc0001d82a0})
    common/cmd/com.docker.backend/internal/handlers/vminit.go:39 +0x42

为什么Docker桌面不按照VM配置文件来寻找镜像的位置?还有其他地方我必须改变吗?

经过大量搜索,我发现了以下需要使用新路径更新的附加文件:

  • ~/Library/Preferences/com.electron.docker-frontend.plist
  • ~/Library/Preferences/com.electron.dockerdesktop.plist
  • ~/Library/Group Containers/group.com.docker/settings.json

用新路径更新所有这些文件后,Docker Desktop 能够正确启动。