簡體   English   中英

Windows 2016:Docker容器錯誤

[英]Windows 2016: Docker container error

我在Windows Server 2016上使用docker,我使用“ microsoft / windowsservercore:latest”映像創建了一個容器。 在此圖像上,我已經安裝了“打印服務器”角色,但是當我嘗試調用“ Get-Printer” cmdlet時,后台打印程序服務出現錯誤。 這些是用於重新創建問題的命令:

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:后台打印程序服務不可用。 確保后台處理程序服務正在運行。 在第1行:char:1 + Get-Printer + ~~~~~~~~~~ + + CategoryInfo:未指定:(MSFT_Printer:ROOT / StandardCimv2 / MSFT_Printer)[Get-Printer],CimException + FullyQualifiedErrorId:HRESULT 0x800706ba, Get-Printer在事件查看器中,我發現錯誤:Print Spooler服務意外終止。 它已經完成了2次。

有人可以幫我解決這個問題嗎?

很抱歉聽到您遇到此問題,我們將竭盡所能幫助您解決問題:)

為了更全面,我通過運行以下命令自己嘗試了此操作:

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/zh-cn/virtualization/windowscontainers/manage-containers /容器網絡

--Kallie B.(Microsoft網絡團隊程序經理)

由於Windows容器與主機共享同一內核,因此不能同時運行后台處理程序。 因此,從主機停止並禁用后台處理程序,您就可以在該服務器上的一個容器上使用后台處理程序。

這是一組固定的命令:

Stop-Service spooler
Set-Service spooler -StartupType Disabled

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

Kallie似乎能夠完成上述步驟的原因可能是因為托管方式不同。 我在Server 2016上通過Docker嘗試了上述步驟,並遇到了相同的錯誤。 當我在Windows 10上通過Docker嘗試時,我能夠成功啟動假脫機程序並運行上述命令,但是我無法成功安裝任何驅動程序,這將使其真正有用。 嘗試安裝任何.inf文件時,Pnputil只會拋出奇怪的“無數據”錯誤。

我的猜測是它可以在Windows 10上運行,因為它使用的是Hyper-v仿真,而不是在Server 2016上托管Server 2016 Core時使用的本機容器。我注意到的另一件事是,在Windows 10上創建容器時,驅動程序是從基礎計算機繼承的Server 2016,但不是在Windows 10上。我認為這是Docker專家很容易理解的行為,但是似乎繼承的驅動程序可能會導致崩潰。 我也不是Windows專家。

無論哪種方式,似乎都需要Microsoft研究和解決。

  • docker運行的網絡(默認情況下)與主機所在的網絡不同。

  • 從容器內部ping localhost並沒有執行您認為正在執行的操作。

  • 了解Docker網絡的第一步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM