Condividi tramite


Spooler di stampa nei Windows Container

Le applicazioni con una dipendenza dai servizi di stampa possono essere incluse correttamente in contenitori Windows. Esistono requisiti speciali che devono essere soddisfatti per abilitare correttamente la funzionalità del servizio stampante. Questa guida illustra come configurare correttamente la distribuzione.

Importante

Mentre l'accesso ai servizi di stampa nei contenitori funziona correttamente, la funzionalità è limitata nella forma; alcune azioni correlate alla stampa potrebbero non funzionare come previsto. Ad esempio, le app che dipendono dall'installazione di driver della stampante nell'host non possono essere containerizzate perché l'installazione del driver dall'interno di un contenitore non è supportata. Se trovi una funzionalità di stampa non supportata che desideri venga supportata nei contenitori, apri un feedback qui sotto.

Configurazione

  • L'host deve essere Windows Server 2019 o Windows 10 Pro/Enterprise aggiornamento di ottobre 2018 o versione successiva.
  • Usare l'immagine di base per i contenitori windows o l'immagine di base per i contenitori di Windows Server. Altre immagini di base dei contenitori di Windows (ad esempio Nano Server e Windows Server Core) non portano il ruolo del server di stampa.

isolamento Hyper-V

Si raccomanda di eseguire il contenitore con isolamento Hyper-V. Quando viene eseguito in questa modalità, è possibile avere il numero di contenitori desiderati in esecuzione con l'accesso ai servizi di stampa. Non è necessario modificare il servizio spooler del host.

È possibile verificare la funzionalità con la query di PowerShell seguente:

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

Isolamento dei processi

A causa della natura condivisa del kernel dei contenitori isolati dal processo, il comportamento corrente limita l'utente a eseguire solo un'istanza del servizio spooler della stampante nell'host e in tutti i contenitori figli. Se l'host dispone dello spooler della stampante in esecuzione, è necessario arrestare il servizio sull'host prima di tentare di avviare il servizio stampante nell'ospite.

Mancia

Se si avvia un contenitore e si interroga il servizio spooler sia nel contenitore che nell'host contemporaneamente, entrambi invieranno il loro stato come "attivo". Ma non essere ingannato: il contenitore non sarà in grado di eseguire una query per un elenco di stampanti disponibili. Il servizio spooler dell'host non deve essere eseguito.

Per verificare se l'host esegue il servizio stampante, usare la query in PowerShell seguente:

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

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

PS C:\Users\Administrator>

Per arrestare il servizio di spooler nell'host, usare i comandi seguenti in PowerShell:

Stop-Service spooler
Set-Service spooler -StartupType Disabled

Avviare il contenitore e verificare l'accesso alle stampanti.

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