Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las aplicaciones con una dependencia de los servicios de impresión se pueden incluir correctamente en contenedores de Windows. Hay requisitos especiales que deben cumplirse para habilitar correctamente la funcionalidad del servicio de impresora. En esta guía se explica cómo configurar correctamente la implementación.
Importante
Aunque obtener acceso a los servicios de impresión correctamente en contenedores funciona, la funcionalidad está limitada en forma; 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 dentro de un contenedor. Abra un comentario a continuación si encuentra una característica de impresión no compatible que quiera admitir en los contenedores.
Configuración
- El host debe ser Windows Server 2019 o Windows 10 Pro/Enterprise, actualización de octubre de 2018 o posterior.
- Use la imagen base de para contenedores de Windows o la imagen base de para contenedores de Windows Server. Otras imágenes base de contenedor de Windows (como Nano Server y Windows Server Core) no llevan el rol de servidor de impresión.
Hyper-V Aislamiento
Se recomienda ejecutar el contenedor con aislamiento de Hyper-V. Cuando se ejecuta en este modo, puede tener tantos contenedores como quiera ejecutar con acceso a los servicios de impresión. No es necesario modificar el servicio de administrador de trabajos en cola en el servidor host.
Puede comprobar 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 del 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 en cola de impresora en todo el host y todos sus contenedores secundarios. Si el host tiene el administrador de trabajos en cola de la impresora en ejecución, debe detener el servicio en el host antes de intentar iniciar el servicio de impresora en el invitado.
Sugerencia
Si inicia un contenedor y consulta el servicio de administrador de trabajos en cola tanto en el contenedor como en el host simultáneamente, ambos informarán que su estado es "en ejecución". Pero no se engaña: el contenedor no podrá consultar una lista de impresoras disponibles. El servicio de administrador de trabajos en cola del host no se debe ejecutar.
Para comprobar si el host ejecuta el servicio de impresora, use la consulta en 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 en cola en el host, use los siguientes comandos en PowerShell:
Stop-Service spooler
Set-Service spooler -StartupType Disabled
Inicie el contenedor y compruebe 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:\>