常见问题解答

MSI

如果用户拥有较旧的 Docker Desktop 安装(即版本号为 .exe),用户数据会发生什么变化?

如果用户安装的是较旧的 .exe 版本,则必须在使用新的 MSI 版本之前卸载该版本。此操作将删除本地计算机上的所有 Docker 容器、镜像、卷以及其他 Docker 相关数据,并移除应用程序生成的文件。对于旧版本,用户应备份其希望保留的容器。

对于 Docker Desktop 版本 4.30 及更高版本的 exe 安装程序,提供了一个 -keep-data 标志。该标志可移除 Docker Desktop,但保留底层数据(例如用于运行容器的虚拟机)。

& 'C:\Program Files\Docker\Docker\Docker Desktop Installer.exe' uninstall -keep-data

如果用户的计算机上安装了旧版本的 .exe,会发生什么情况?

新的 MSI 安装程序会检查是否已安装旧版本,若已安装则不会继续安装流程,而是提示用户先卸载当前/旧版本,然后再尝试安装 MSI 版本。

我的安装失败了,我该如何查明发生了什么?

MSI 安装程序有时会意外失败,且不会向用户提供有关问题原因的详细信息。

要调试安装失败的情况,请在启用详细日志记录的情况下再次运行安装命令:

msiexec /i "DockerDesktop.msi" /L*V ".\msi.log"

安装失败后,打开日志文件并搜索 value 3 的出现位置。这是 Windows 安装程序在失败时输出的退出代码。在该行上方,您将找到失败的原因。

为什么安装程序在每次全新安装结束时都会提示重启?

安装程序会提示重启系统,因为它假设已对系统进行了需要重启才能完成配置的更改。

例如,如果您选择WSL引擎,安装程序将添加所需的Windows功能。安装完这些功能后,系统将重启以完成配置,从而使WSL引擎正常运行。

您可以通过在命令行启动安装程序时使用 /norestart 选项来禁止自动重启:

msiexec /i "DockerDesktop.msi" /L*V ".\msi.log" /norestart

为什么当 MSI 通过 Intune 或其他 MDM 解决方案安装时,docker-users 组未被填充?

对于MDM解决方案来说,通常以系统账户的上下文安装应用程序。这意味着docker-users组不会填充用户的账户,因为系统账户无法访问用户的上下文。

例如,您可以在提升权限的命令提示符中运行安装程序并输入 psexec 来复现此问题:

psexec -i -s msiexec /i "DockerDesktop.msi"

安装应能成功完成,但 docker-users 组将不会被填充。

作为临时解决方案,您可以创建一个在用户账户上下文中运行的脚本。

该脚本负责创建 docker-users 组,并将其填充为正确的用户。

以下是一个示例脚本,用于创建 docker-users 用户组并将当前用户添加到该组中(具体要求可能因环境而异):

$Group = "docker-users"
$CurrentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

# Create the group
New-LocalGroup -Name $Group

# Add the user to the group
Add-LocalGroupMember -Group $Group -Member $CurrentUser

注意

将新用户添加到 docker-users 用户组后,该用户必须退出登录,然后重新登录,才能使更改生效。