2017-01-10 132 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專家。

無論哪種方式,它似乎是微軟必須研究和解決的問題。

相關問題