與列印服務有相依性的應用程式可以使用 Windows 容器成功地容器化。 為了成功啟用印表機服務功能,有一些特殊需求必須遵循。 本指南將說明如何正確設定您的部署。
重要
雖然您可以在容器中順利存取列印服務,但功能的形式會有所限制;某些列印相關動作可能無法正常執行。 例如,如果將印表機驅動程式安裝到主機時有應用程式的相依性,則應用程式無法容器化,因為從容器內安裝驅動程式未受到支援。 如果您發現您想要在容器中支援的列印功能不受支援,請在下方提出意見反應。
安裝程式
- 主機應是 Windows Server 2019 或 Windows 10 專業版/企業版 2018 更新版或更新版本。
- mcr.microsoft.com/windows或mcr.microsoft.com/windows/server映射應該是目標基底映射。 其他 Windows 容器基底映像 (例如 Nano Server 和 Windows Server Core) 不會包含列印伺服器角色。
Hyper-V 隔離
建議您使用 Hyper-V 隔離來執行您的容器。 在此模式中執行時,您可以執行任意數目的容器來存取列印服務。 您不需要修改主機上的多工緩衝處理器服務。
您可以使用下列 PowerShell 查詢來驗證功能:
PS C:\Users\Administrator> docker run -it --isolation hyperv mcr.microsoft.com/windows:1809 powershell.exe
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\> Get-Printer
Name ComputerName Type DriverName PortName Shared Published
---- ------------ ---- ---------- -------- ------ --------
Microsoft XPS Document Writer Local Microsoft XPS Document... PORTPROMPT: False False
Microsoft Print to PDF Local Microsoft Print To PDF PORTPROMPT: False False
Fax Local Microsoft Shared Fax D... SHRFAX: False False
PS C:\>
程序隔離
由於程序隔離容器有共用核心的本質,因此目前的行為會限制使用者在主機和其所有容器子系上,只能執行印表機多工緩衝處理器服務的一個執行個體。 如果主機上有執行中的印表機多工緩衝處理器,則您必須先停止主機上的服務,然後再嘗試從客體中啟動印表機服務。
提示
如果您同時在容器和主機中啟動容器並查詢多工緩衝處理器服務,則這兩者都會報告其狀態為「執行中」。 但不要被騙了 -- 容器並無法查詢可用的印表機清單。 主機的多工緩衝處理器服務不得執行。
若要檢查主機是否正在執行印表機服務,請在 PowerShell 中使用下列查詢:
PS C:\Users\Administrator> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\Users\Administrator>
若要停止主機上的多工緩衝處理器服務,請在 PowerShell 中使用下列命令:
Stop-Service spooler
Set-Service spooler -StartupType Disabled
啟動容器並確認對印表機的存取。
PS C:\Users\Administrator> docker run -it --isolation process mcr.microsoft.com/windows:1809 powershell.exe
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\> Get-Printer
Name ComputerName Type DriverName PortName Shared Published
---- ------------ ---- ---------- -------- ------ --------
Microsoft XPS Document Writer Local Microsoft XPS Document... PORTPROMPT: False False
Microsoft Print to PDF Local Microsoft Print To PDF PORTPROMPT: False False
Fax Local Microsoft Shared Fax D... SHRFAX: False False
PS C:\>