首页 > 解决方案 > macOS:如何在不删除现有容器的情况下更新在外部驱动器上运行的 Docker Desktop?

问题描述

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

在此处输入图像描述

标签: macosdockerdocker-desktop

解决方案


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

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

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

数据位置

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

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

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

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

增量升级

始终建议按照您当前版本和目标版本之间的官方发布版本进行增量升级。可以在 发行说明中找到该发行版。

升级步骤如下:

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

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

如果出现问题,您可以使用故障排除指南

通过重建 VM 进行升级

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

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

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

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

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

要导出信息,您可以使用docker exportdocker image save。以下示例将图像或容器/卷保存到名为的文件中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

推荐阅读