以非管理员用户访问Windows容器内的Docker主机管道

时间:2019-05-13 13:35:40

标签: c# windows docker permissions

最近几天,我设法在Windows纳米服务器容器中工作Docker.net客户端,该容器将Docker的主机管道作为卷安装,如下例所示:

docker container run -itd --user ContainerAdministrator -v 
\\.\pipe\docker_engine:\\.\pipe\docker_engine mycustomimage

但是,我看到要使其正常工作,我还需要指定--user ContainerAdministrator,否则将使用标准ContainerUser用户,并且这不是Administrators组的一部分,客户端将抛出“拒绝访问”类型尝试访问Docker Pipe时发生错误。

问题是主机或容器上是否有方法/配置,特别是在nanoserver映像中使用非管理员用户来克服此行为,而Powershell不可用并且您被迫使用标准cmd?

P.S。我使用没有Hyper-V的Windows Server 2019作为主机和Docker ee 18.09

1 个答案:

答案 0 :(得分:1)

您可以授予ContainerUser管理员权限:

RUN net localgroup administrators /add "User Manager\ContainerUser"

这是最简单的解决方法。

“用户管理器”是仅位于Windows容器内的虚拟域控制器。

尽管“用户管理器\ ContainerUser”具有“ Well-Known-SID”,但主机尚未知道(Windows OS)。因此,您不能直接将权限授予“用户管理器\ ContainerUser”。 但是您可以授予以下权限:

  • 每个人
  • BUILTIN \ Users
  • NT AUTHORITY \ SERVICE
  • 控制台登录
  • NT AUTHORITY \授权用户
  • NT AUTHORITY \此组织

这是主机的知名组的列表。

从理论上讲,您应该能够通过docker引擎将Docker容器用户映射到主机用户,但是我尚未在Windows平台上对其进行测试。