最近几天,我设法在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
答案 0 :(得分:1)
您可以授予ContainerUser管理员权限:
RUN net localgroup administrators /add "User Manager\ContainerUser"
这是最简单的解决方法。
“用户管理器”是仅位于Windows容器内的虚拟域控制器。
尽管“用户管理器\ ContainerUser”具有“ Well-Known-SID”,但主机尚未知道还(Windows OS)。因此,您不能直接将权限授予“用户管理器\ ContainerUser”。 但是您可以授予以下权限:
这是主机的知名组的列表。
从理论上讲,您应该能够通过docker引擎将Docker容器用户映射到主机用户,但是我尚未在Windows平台上对其进行测试。