2017-01-10 113 views
7

我在Windows server 2016上使用docker,我使用“microsoft/windowsservercore:latest”图像创建了一个容器。 在此图像上,我已经安装了“打印服务器”角色,但是当我尝试调用“Get-Printer”cmdlet时,我获得了假脱机程序服务的错误。这些 是命令用于重现问题:Windows 2016:Docker容器错误

docker run -d --name testspoolererror1 microsoft/windowsservercore:latest ping -t localhost 
docker exec -it testspoolererror1 powershell 
Install-WindowsFeature Print-Server 
Set-Service spooler -StartupType Automatic 
Start-Service spooler 
Get-Service spooler 
Get-Printer 

这是我收到的错误:

Get-Printer : The spooler service is not reachable. Ensure the spooler service is running. At line:1 char:1 + Get-Printer + ~~~~~~~~~~~ + CategoryInfo : NotSpecified: (MSFT_Printer:ROOT/StandardCimv2/MSFT_Printer) [Get-Printer], CimException + FullyQualifiedErrorId : HRESULT 0x800706ba,Get-Printer In the event viewer i found the error: The Print Spooler service terminated unexpectedly. It has done this 2 time(s).

谁能帮我解决这个问题呢?

+0

我有示例问题。 'Get-Service spooler'显示假脱机程序服务启动,但运行'Get-Printer'后崩溃。 'Get-WinEvent'表示后台打印程序崩溃并且另外显示:'打印后台打印程序未能加载插件模块WSDMon.dll,错误代码为0x7E。查看上下文的事件用户数据“ – fons

回答

-2
  • docker运行的网络(默认情况下)与主机不是同一个网络。

  • 从容器内ping本地主机并不是在做你认为它正在做的事情。

  • 了解如何泊坞窗网作为步骤1

+0

不要认为问题与网络相关,因为所有命令都是从容器内执行的。另外,'ping'命令只是让容器继续运行。这个问题对我来说似乎完全合法。 – Gene

1

我很遗憾听到你有这个问题,我会很乐意尽我所能来帮助你梳理一下:

docker run -it microsoft/windowsservercore:latest powershell 

(现在从容器中运行的powershell)

:)

对于被彻底起见,我通过运行下面的命令尝试这样做自己

Install-WindowsFeature Print-Server 
Set-Service spooler -StartupType Automatic 
Start-Service spooler 
Get-Service spooler 
Get-Printer 

我能够在我的系统上运行这些,没有错误。所以这是一个开始。

现在,从您的错误看来,后台打印程序服务甚至没有启动。当您运行Get-Service spooler时,您会看到什么?你是否会尝试在系统上运行这些命令,就像我上面列出的那样,然后报告结果?

此外,为了澄清,当你从容器ping本地主机时,你想做什么?你是否试图ping你的容器主机?

而作为一个侧面说明,如果你正在寻找的集装箱联网如何在Windows上运行的背景信息,下面是一个良好的开端:https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/container-networking

--Kallie B.(项目经理,Microsoft网络队)

+0

我用你的命令做过一个测试,我有一个错误:Get-Printer:假脱机程序服务无法访问。确保假脱机程序。假脱机程序服务在“Get-Printer”调用之前和之后运行。我已在Windows 2016 DataCenter上进行了测试,使用docker 1.12和docker 1.14-dev进行了更新,结果相同。 – bdn02

+0

同样的问题在这里... – craffael

+0

我遇到了和斯科特一样的问题。 'Get-Service spooler'表明后台处理程序启动,但运行'Get-Printer'后崩溃。 'Get-WinEvent'表示后台打印程序崩溃并且另外显示:'打印后台打印程序未能加载插件模块WSDMon.dll,错误代码为0x7E。查看上下文的事件用户数据 – fons

-1

Kallie似乎已能够实现上述步骤的原因可能是因为它的托管方式不同。我在服务器2016盒子上通过Docker尝试了上述步骤,并且遇到了同样的错误。当我在Windows 10上通过Docker试用它时,我能够成功启动假脱机程序并运行上述命令,但是我无法成功安装任何驱动程序,从而使其真正有用。尝试安装任何.inf文件时,Pnputil只会抛出奇怪的“无数据”错误。

我的猜测是它可以在Windows 10上运行,因为它使用的是hyper-v模拟,而不是在服务器2016上托管Server 2016 Core时使用的本地容器。我注意到的另一件事是驱动程序是从基本机器继承在Server 2016上创建容器,但不在Windows 10上创建容器。我认为这是Docker专家的相当充分理解的行为,但它看起来像继承的驱动程序可能导致崩溃。不过,我也不是Windows专家。

无论哪种方式,它似乎是微软必须研究和解决的问题。

相关问题