我可以在没有管理员权限的情况下在Windows上运行Docker Desktop吗?

41
我知道我需要管理员权限来安装Docker桌面版;但是我运行它时是否也需要管理员权限?文档没有说需要,Google搜索也没有给出这样的建议;但是如果我尝试以非特权用户身份运行它,进程将立即被关闭,并且我会收到事件日志条目,显示“进程需要提升的权限才能运行”。
我在公司环境中使用Windows 10企业版,我们有非特权账户。在这种情况下,Docker桌面版是否不可用,还是我安装有误?
7个回答

40
自 Docker Desktop 2.4(可能更早,我没有进行测试),此功能已得到支持。根据Windows 安装说明

如果管理员帐户与用户帐户不同,则必须将用户添加到 docker-users 组中。以管理员身份运行计算机管理,并导航到本地用户和组 > 组 > docker-users。右键单击以将用户添加到组中。注销并重新登录以使更改生效。


请注意@Simon Brady的最后一条指令:“注销并重新登录以使更改生效”。 我遵循了这个步骤,按照说明操作成功。 - zielot
我正在使用 Docker version 20.10.17, build 100c701,并且我的本地用户已经是 docker-users 的成员。然而,当我运行任何执行操作的 docker 命令时,我会得到以下错误信息:error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Ddocker%22%3Atrue%7D%7D&limit=0": open //./pipe/docker_engine: Das System kann die angegebene Datei nicht finden.(系统找不到指定的文件)。 - Cadoiz

16

我没有测试过,但是这篇文章似乎表明可以实现。

概括;

问题

需要管理员权限的原因是默认配置中的Docker客户端使用命名管道连接到Docker引擎,而该命名管道仅能被管理员访问。

解决方案

为避免这种情况,您可以简单地将FullControl访问权限授予用户以访问该命名管道。

原作者还提供了一个PowerShell工具源代码来帮助完成此管理任务。


太好了 - 谢谢!我现在已经完全习惯了在我的机器上拥有管理员权限,所以不太可能尝试这个:但如果它确实有效,那显然是一个更好的解决方案。 - Ed Graham
1
谢谢!它起作用了!(我基本上使用了该工具的源代码,为docker用户组提供了足够的访问权限来访问该命名管道) - Peter Pesch
这个正常工作了。 - Juan Vilar

10

最新版本的Docker桌面版支持此功能,但用户应该在docker-users组中。

如果您使用的是Windows 10家庭版,则向普通用户添加多个组将很麻烦,即使您使用'netplwiz'。

要将新组添加到用户中,可以在Powershell中使用以下命令。

以管理员身份运行powershell,然后执行

 net localgroup "docker-users" "<user_name>" /add

提议的命令也可以在普通 cmd 中使用。 - i_want_more_edits
这对我在 Windows 11 Home 上有效,因为它没有用于设置本地用户/组的屏幕。 - Joe Enos

8
答案似乎是否定的。我不明白为什么其他同事都避免了这个问题,后来才得知他们请求管理员权限并被授予了!我只在这里工作了两年半... :|

2
管理员权限的问题在于(当然除了安全问题),你使用来处理Docker容器/镜像的每个应用程序也需要这些权限。例如,我必须以管理员身份启动Visual Studio Code并安装所有我需要的东西(已经为普通用户安装过),以便我可以以任何合理的方式使用它与Docker。 - rbaleksandar

4
我能在我的 Windows 10 机器的非管理员帐户上运行 Docker Desktop,也可以在非提升的命令提示符或 PowerShell 提示符中发出 docker 命令。请注意,我的非管理员帐户是本地组 docker-users 的成员。
最初,我从管理员帐户安装它,并且只有在保持登录状态为管理员时才能正常工作。如果我没有以管理员身份登录,则会出现 aboellinger 在其答案中描述的命名管道错误。
简单地从我的非管理员帐户启动 C:\Program Files\Docker\Docker\Docker Desktop.exe 就可以解决问题(等待一些时间以启动进程)。它甚至没有要求提升权限。

2
不行。你不能在没有管理员权限的情况下运行 Docker desktop.exe。至少我不能。而且根据我在互联网上看到的,你默认情况下也不应该能够运行它。 - Kuba Šimonovský
@KubaŠimonovský 你使用的是哪个版本?运行时出现了什么错误?我还注意到我的用户帐户绝对不是管理员帐户,却是docker-users帐户的一部分。我将从那里删除我的帐户并查看会发生什么。 - JamesQMurphy
1
当我从 docker-users 组中移除我的账户后,我无法启动 Docker Desktop.exe,但是错误提示非常明确:Docker Desktop - 访问被拒绝,你没有权限使用 Docker。你必须在 "docker-users" 组中。所以我猜你的问题可能不同。 - JamesQMurphy
啊啊..很遗憾,由于公司限制,我无法操作组和用户,因此无法尝试...我已经使用docker很长时间,并习惯以管理员身份运行它。 - Kuba Šimonovský
有趣。我的错误(一个事件日志条目,显示“进程需要提升的权限才能运行”)与詹姆斯的不同;我根本没有收到任何关于docker-users组的指示。也许他们已经在更新版本中添加了该错误消息? - Ed Graham
安装完成后,您需要注销并重新登录,以便将您的成员身份添加到新的.\docker-users组中,并加入您的登录令牌。 - sjcaged

2
将我的用户帐户添加到docker-users组解决了我的问题。但是,由于我没有运行Win10 Pro,因此无法访问帐户控制的GUI界面。相反,我以管理员身份运行了PowerShell,并在其中将我的用户帐户添加到docker-users组。

没错。你可以使用lusrmgr.exe在Windows 10 Home中启用本地用户和组管理,就像我在这里读到的那样。 - Andrea Mattioli

1
Docker从设计上存在不安全性,如果一个用户可以在没有管理员权限的情况下运行docker命令(即属于docker组),这基本上意味着该用户可以逃脱容器并成为主机上的管理员。不知道在Windows上如何实现,但在Linux上“只需运行”。 /var/run/docker.sock的Docker安全风险是什么?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接