Administrador de trabajos de impresión en contenedores de Windows
Las aplicaciones con una dependencia en los servicios de impresión se pueden incluir correctamente en contenedores de Windows. Existen requisitos especiales que se deben cumplir para poder habilitar correctamente la funcionalidad del servicio de impresión. En esta guía se explica cómo configurar correctamente tu implementación.
Importante
Aunque el acceso a los servicios de impresión en los contenedores funciona correctamente, la funcionalidad está limitada, es posible que algunas acciones relacionadas con la impresión no funcionen. Por ejemplo, las aplicaciones que dependen de la instalación de controladores de impresora en el host no se pueden incluir en contenedores porque no se admite la instalación de controladores desde un contenedor. Escribe un comentario a continuación si encuentras una característica de impresión no compatible que quieres que se admita en los contenedores.
Instalación
- El host debe ser Windows Server 2019 o Windows 10 Pro/Enterprise con la actualización de octubre de 2018 o posterior.
- Las imágenes de mcr.microsoft.com/windows o de mcr.microsoft.com/windows/server deben ser la imagen base de destino. Otras imágenes base de contenedor de Windows (como Nano Server y Windows Server Core) no llevan el rol del servidor de impresión.
Aislamiento de Hyper-V
Se recomienda ejecutar el contenedor con el aislamiento de Hyper-V. Cuando ejecutes en este modo, puedes tener tantos contenedores como quieras ejecutar con acceso a los servicios de impresión. No es necesario modificar el servicio de administrador de trabajos de impresión en el host.
Puedes verificar la funcionalidad con la siguiente consulta de 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:\>
Aislamiento de procesos
Debido a la naturaleza de kernel compartido de los contenedores con aislamiento de procesos, el comportamiento actual limita al usuario a ejecutar solo una instancia del servicio de administrador de trabajos de impresión en el host y en todos sus contenedores secundarios. Si el host tiene en ejecución el administrador de trabajos de impresión, tienes que detener el servicio en el host antes de que intentar iniciar el servicio de impresión en el invitado.
Sugerencia
Si inicias un contenedor y consultas el servicio de administrador de trabajos de impresión tanto en el contenedor como en el host simultáneamente, ambos notificarán su estado como "En ejecución". Pero no te dejes engañar: el contenedor no podrá consultar una lista de las impresoras disponibles. No debes ejecutar el servicio de administrador de trabajos de impresión del host.
Para comprobar si el host está ejecutando el servicio de impresión, usa la consulta de PowerShell siguiente:
PS C:\Users\Administrator> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\Users\Administrator>
Para detener el servicio de administrador de trabajos de impresión en el host, usa los siguientes comandos en PowerShell:
Stop-Service spooler
Set-Service spooler -StartupType Disabled
Inicia el contenedor y verifica el acceso a las impresoras.
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:\>