常见问题

MSI

如果用户安装了较旧的Docker Desktop版本(即.exe),用户数据会发生什么?

如果他们安装了较旧的.exe版本,用户必须先卸载此版本才能使用新的MSI版本。这将删除本地机器上所有Docker容器、镜像、卷和其他与Docker相关的数据,并删除应用程序生成的文件。对于较旧的版本,用户应该备份他们想要保留的任何容器。

对于exe安装程序的Docker Desktop 4.30及更高版本,提供了-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 Installer在失败时输出的退出代码。在该行上方,您将找到失败的原因。

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

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

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

您可以使用命令行启动安装程序时使用/norestart选项来抑制重新启动

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

为什么使用Intune或其他MDM解决方案安装MSI时,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组后,用户必须注销然后重新登录才能使更改生效。