Windows 容器中的列印多工緩衝處理器

與列印服務有相依性的應用程式可以使用 Windows 容器成功地容器化。 為了成功啟用印表機服務功能,有一些特殊需求必須遵循。 本指南將說明如何正確設定您的部署。

重要

雖然您可以在容器中順利存取列印服務,但功能的形式會有所限制;某些列印相關動作可能無法正常執行。 例如,如果將印表機驅動程式安裝到主機時有應用程式的相依性,則應用程式無法容器化,因為從容器內安裝驅動程式未受到支援。 如果您發現您想要在容器中支援的列印功能不受支援,請在下方提出意見反應。

安裝程式

  • 主機應是 Windows Server 2019 或 Windows 10 專業版/企業版 2018 更新版或更新版本。
  • mcr.microsoft.com/windowsmcr.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:\>