【发布时间】:2017-12-22 09:22:47
【问题描述】:
我正在尝试在容器中使用 Jenkins 并挂载命名管道来控制主机上的 docker 引擎。根据this 博客文章,为此安装命名管道就足够了。但是,当我使用该挂载运行容器时,容器上没有打开命名管道,因此 docker 客户端不起作用。
我应该在 Dockerfile 中手动打开命名管道吗?如果有,怎么做?
这是一个没有 Jenkins 的最小复制(我也尝试将 docker 插件安装到 Jenkins 并通过巧克力将 docker 客户端安装到容器。):
Docker version 17.09.1-ce, build 19e2cf6
Windows version 1709, Build 16299.125
Dockerfile:
# escape=`
FROM microsoft/windowsservercore
SHELL ["powershell"]
ENTRYPOINT [System.IO.Directory]::GetFiles("\\.\\pipe\\");
构建和运行的命令:
docker build -t namedpipetest .
docker run -v \\.\pipe\docker_engine:\\.\pipe\docker_engine namedpipetest
输出是:
\\.\\pipe\\InitShutdown
\\.\\pipe\\lsass
\\.\\pipe\\ntsvcs
\\.\\pipe\\scerpc
\\.\\pipe\\Winsock2\CatalogChangeListener-454-0
\\.\\pipe\\epmapper
\\.\\pipe\\Winsock2\CatalogChangeListener-124-0
\\.\\pipe\\LSM_API_service
\\.\\pipe\\eventlog
\\.\\pipe\\Winsock2\CatalogChangeListener-4b8-0
\\.\\pipe\\wkssvc
\\.\\pipe\\TermSrv_API_service
\\.\\pipe\\Ctx_WinStation_API_service
\\.\\pipe\\winreg
\\.\\pipe\\cexec-76
\\.\\pipe\\cexec-77
\\.\\pipe\\Winsock2\CatalogChangeListener-4f4-0
\\.\\pipe\\SessEnvPublicRpc
\\.\\pipe\\Winsock2\CatalogChangeListener-278-0
\\.\\pipe\\PSHost.131584061845916516.1868.DefaultAppDomain.powershell
输出:
docker inspect -f '{{ .Mounts }}' 3edad32c9f81
[{npipe \\.\pipe\docker_engine \\.\pipe\docker_engine true }]
【问题讨论】:
标签: windows docker named-pipes