Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения с зависимостью от служб печати можно контейнеризировать с помощью контейнеров Windows. Существуют особые требования, которые должны быть выполнены для успешного включения функциональных возможностей службы принтера. В этом руководстве объясняется, как правильно настроить развертывание.
Важный
При успешном получении доступа к службам печати в контейнерах функциональные возможности ограничены; некоторые действия, связанные с печатью, могут не работать. Например, приложения, которые зависят от установки драйверов принтера в систему, не могут быть помещены в контейнер, так как установка драйвера из контейнера не поддерживается. Если вы найдете неподдерживаемую функцию печати, которую вы хотите поддерживать в контейнерах, откройте отзыв ниже.
Настройка
- Хост должен быть Windows Server 2019 или Windows 10 Pro/Enterprise, обновление от октября 2018 г. или более поздняя версия.
- Используйте базовый образ для контейнеров Windows или базовый образ для контейнеров Windows Server. Другие базовые образы контейнеров Windows (например, Nano Server и Windows Server Core) не несут роль сервера печати.
Hyper-V Изоляция
Мы рекомендуем запускать контейнер с изоляцией Hyper-V. При запуске в этом режиме можно иметь столько контейнеров, сколько требуется для работы с доступом к службам печати. Вам не нужно изменять службу spooler на узле.
Вы можете проверить функциональные возможности с помощью следующего запроса 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:\>
Изоляция процессов
Из-за общего характера ядра изолированных процессов контейнеров текущее поведение ограничивает работу пользователя только одном экземпляре службы spooler принтера на узле и всех его дочерних контейнерах. Если на узле работает диспетчер очереди принтера, необходимо остановить эту службу на узле, прежде чем пытаться запустить службу принтера в гостевой системе.
Совет
Если вы запускаете контейнер и запрашиваете службу spooler как в контейнере, так и в хосте одновременно, оба будут сообщать о своем состоянии как 'запущены'. Но не обмануйте- контейнер не сможет запрашивать список доступных принтеров. Служба spooler хоста не должна выполняться.
Чтобы проверить, запущен ли узел, работающий со службой принтеров, используйте приведенный ниже запрос в PowerShell.
PS C:\Users\Administrator> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\Users\Administrator>
Чтобы остановить службу spooler на узле, используйте следующие команды в 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:\>