Druckspooler in Windows-Containern

Anwendungen mit einer Abhängigkeit von Druckdiensten können erfolgreich mit Windows-Containern containerisiert werden. Es gibt spezielle Anforderungen, die erfüllt werden müssen, um die Funktionalität des Druckerdiensts erfolgreich zu aktivieren. In diesem Handbuch wird erläutert, wie Sie Ihre Bereitstellung ordnungsgemäß konfigurieren.

Wichtig

Während der erfolgreiche Zugriff auf Druckdienste in Containern funktioniert, ist die Funktionalität eingeschränkt. Einige druckbezogene Aktionen funktionieren möglicherweise nicht. Beispielsweise können Apps, die eine Abhängigkeit von der Installation von Druckertreibern auf dem Host haben, nicht containerisiert werden, da Treiberinstallation innerhalb eines Containers nicht unterstützt wird. Bitte reichen Sie unten ein Feedback ein, wenn Sie eine nicht unterstützte Druckfunktion finden, die Sie mithilfe von Containern unterstützt sehen möchten.

Konfiguration

Hyper-V-Isolation

Es wird empfohlen, Ihren Container mit Hyper-V-Isolation auszuführen. Wenn es in diesem Modus ausgeführt wird, können Sie beliebig viele Container verwenden, die Zugriff auf die Druckdienste haben. Sie müssen den Spoolerdienst nicht auf dem Host ändern.

Sie können die Funktionalität mit der folgenden PowerShell-Abfrage überprüfen:

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:\>

Prozessisolation

Da Container mit Prozessisolation einen gemeinsamen Kernel nutzen, können Benutzende nur eine Instanz des Druckspoolerdiensts im Host und allen untergeordneten Containern ausführen. Wenn der Host den Druckspooler ausgeführt hat, müssen Sie den Dienst auf dem Host beenden, bevor Sie den Druckerdienst auf dem Gast starten.

Tipp

Wenn Sie einen Container starten und gleichzeitig sowohl im Container als auch auf dem Host den Spoolerdienst abfragen, melden beide den Status als "läuft". Lassen Sie sich nicht täuschen - der Container kann keine Liste der verfügbaren Drucker abfragen. Der Spoolerdienst des Hosts darf nicht ausgeführt werden.

Um zu überprüfen, ob der Host den Druckerdienst ausführt, verwenden Sie die Abfrage in PowerShell unten:

PS C:\Users\Administrator> Get-Service spooler

Status   Name               DisplayName
------   ----               -----------
Running  spooler            Print Spooler

PS C:\Users\Administrator>

Verwenden Sie die folgenden Befehle in PowerShell, um den Spoolerdienst auf dem Host zu beenden:

Stop-Service spooler
Set-Service spooler -StartupType Disabled

Starten Sie den Container, und überprüfen Sie den Zugriff auf die Drucker.

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:\>