macOS:如何在不删除现有容器的情况下更新外部驱动器上 运行 的 Docker 桌面?

macOS: How to update Docker Desktop that's running on an external drive, without removing existing containers?

我已经在 mac 的外部驱动器上安装了 Docker Desktop 3.0。 我正在尝试将其升级到最新版本。我没有收到提示,也看不到任何用于检查 GUI 中更新的选项。 我宁愿不卸载,因为它会删除我设置的容器和数据。但也许我不会失去他们? 有人能指出我正确的方向吗? 谢谢。

文件的位置在升级中不起作用。起主要作用的是源版本和目标版本。 Docker升级为Mac有两种方式,下面会详细介绍:

  1. 增量升级
  2. 升级重建(导出/导入)

在从 3.03 升级到 3.3 的特定情况下,可以增量升级到 3.1 和 3.2,无需导出/导入数据,但是升级到 3.2.1 将需要重建 VM , 因此导出/导入方法将有助于将数据移动到新的 VM。

数据位置

应用程序不包含容器的数据。 Docker for macOS是在虚拟机上运行,数据存储在虚拟机的虚拟磁盘上。

虚拟机的原始数据(虚拟磁盘)位于

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

其中 0 用于第 0 个虚拟机。默认情况下它只有一个 VM,但最好检查一下。您可以从 Preferences > Resources > Disk Image Location 的 GUI 中找到此信息。 data 文件夹内容的简单副本将保留虚拟机。

增量升级

始终建议按照当前版本和目标版本之间的官方发布版本进行增量升级。发布可以在 release notes.

中找到

升级步骤为:

  1. 停止 docker 应用程序(从菜单中找到 docker 图标和 select Quit Docker Desktop
  2. ~/Library/Containers/com.docker.docker/Data
  3. 进行完整备份
  4. 重命名应用程序(您可能需要它返回,以防升级不成功)
  5. 复制目标中的新应用程序并启动它。

将对源版本和目标版本之间的每个次要版本重复此步骤。有些版本可以跳过,但不推荐。

如有问题,您可以使用 troubleshooting guid

通过重建 VM 进行升级

请注意将docker从某些旧版本升级到新版本可能需要重建虚拟机。

此外,有时升级无法正常工作,您需要按照故障排除页面中的说明卸载应用程序。

因此,在继续卸载和重建 VM 之前,如果您有对您很重要的数据,强烈建议在升级前导出容器、卷和映像。

您需要列出要迁移到新 VM 的所有容器、映像和卷。以下 docker 命令将有所帮助:

~# docker ps -a
~# docker volume ls
~# docker image ls

要导出信息,可以使用docker exportdocker image save。以下示例将图像或 container/volume 保存到名为 file.raw:

的文件中
~# docker export <<volume name or contianer name>> > file.raw
~# docker image save <<image name>> > file.raw

安装 Docker(最新版本)并重建 VM 后,要从文件中导入数据,您需要使用:

~# docker import file.raw
~# docker image load file.raw