Windows 10中的Docker //./pipe/docker_engine:访问被拒绝

18
我已按照MSDN的说明在Windows 10(周年版)上安装了Docker。
我可以在以管理员身份运行的PowerShell环境中执行docker.exe命令,但在普通的PowerShell中无法执行。

我已更新Docker配置文件以包含:

{
    "group": "Power Users"
}

并且显然将用户添加到了高级用户,用户也在管理员组中。

是否有任何方法可以执行像docker search *这样的docker命令而不使用以管理员身份运行?

警告:无法从守护程序获取默认注册表端点(连接期间出错:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/info时出错:打开//./pipe/docker_engine: 拒绝访问。) 使用系统默认值:https://index.docker.io/v1/ 连接期间出错:获取http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/images/search?limit=25&term=%2A打开//./pipe/docker_engine: 拒绝访问。


1
你是否在更改配置文件后重启了服务? - Elton Stoneman
谢谢提醒,为了确保,我重新启动了笔记本电脑,但问题仍然存在。这可能是一个错误,也许命名管道没有根据组权限正确设置。 - Jim
你把daemon.json配置文件放在哪里了?它应该在C:\ProgramData\Docker\config\daemon.json。由于空格的原因,Docker可能不支持需要用引号括起来的组名。他们建议使用“docker”,但我使用了“docker-users”。 - carlin.scott
看一下 这里,我用那个解决了这个问题。 - Marcos Venicius
4个回答

9

虽然我的用户拥有管理员权限,但我不需要使用提升的PowerShell来运行Docker。

您可以尝试通过TCP进行连接。在Power Shell中输入:

$env:DOCKER_HOST="tcp://0.0.0.0:2375"
docker ps

或者

$env:DOCKER_HOST="tcp://localhost:2375"
docker ps

自从版本17.03.1-ce-win12(12058)起,如果您使用Docker for Windows并通过TCP连接,则必须检查在tcp://localhost:2375上暴露未经TLS验证的守护程序
敬礼

有可能是我做错了什么,但我尝试过这个方法,对我来说没有任何改变。@Carlos,你是安装了Docker For Windows还是手动安装了dockerd.exe? - Jeff
1
你好,不,我安装了Windows版的Docker。但是我记得在你的问题中,你可能正在使用Windows容器。在这种情况下,我建议你尝试@Jeff的方法。我有Windows版的Docker,但是只是稳定版的,还不支持Windows容器。 - Carlos Rafael Ramirez
我曾在这两个答案之间犹豫不决,但这一个直接解决了问题。我想这可能是个 bug,因为通过 TCP/IP 可用的应该也可以通过管道使用。毕竟,它们只是传输机制。 - Jim
1
这确实有帮助,但我还需要将守护程序切换到 Windows 容器 - 值得检查你需要哪个。 - Tim

4
这是一个侧面回答你的问题,但我认为从长远来看这会是你想要的……
截至1.12.2 Beta 26版,Docker For Windows允许你在Windows和Linux容器之间进行切换。安装程序是一个MSI文件,因此它似乎设置了正确的权限。(而且你不必经过所有手动步骤才能让Windows容器工作!)
我正在Win 10上使用1.12.2 Beta 28版。我可以在Linux和Windows之间切换,并且可以在不运行PS(PowerShell)管理员身份的情况下运行Docker命令。到目前为止,我已经测试了'docker ps'、'docker info'和'docker search *'。
以下是我获取信息的来源(https://stefanscherer.github.io/run-linux-and-windows-containers-on-windows-10/)。

2

当我以非管理员身份启动powershell/cmder时,我遇到了这个问题。当我以管理员身份运行我的powershell/cmder时,问题得到了解决。


0

我尝试了Carlos的解决方案,但对我没用。

所以我只能打开"lusrmgr.msc"(Windows),并按照下面的步骤将我的用户添加到"docker-users"组中。然后我重新启动了电脑,一切都正常工作!

关于这个问题的更多信息请参考: https://github.com/docker/for-win/issues/868

Adding local user to docker-users group.


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