인쇄 서비스에 종속된 애플리케이션은 Windows 컨테이너를 사용하여 성공적으로 컨테이너화할 수 있습니다. 프린터 서비스 기능을 성공적으로 사용하려면 반드시 충족해야 하는 특별한 요구 사항이 있습니다. 이 가이드에서는 배포를 올바르게 구성하는 방법을 설명합니다.
중요하다
컨테이너에서 인쇄 서비스에 성공적으로 액세스하는 것은 작동하지만 기능은 형식으로 제한됩니다. 일부 인쇄 관련 작업이 작동하지 않을 수 있습니다. 예를 들어 컨테이너 내에서 드라이버 설치가 지원되지 않는 때문에 호스트에 프린터 드라이버를 설치하는 데 종속된 앱을 컨테이너화할 수 없습니다. 컨테이너에서 지원하려는 지원되지 않는 인쇄 기능을 찾으면 아래에서 피드백을 여세요.
설치
- 호스트는 Windows Server 2019 또는 Windows 10 Pro/Enterprise 2018년 10월 업데이트 이상이어야 합니다.
- Windows 컨테이너 기본 이미지 또는 Windows Server 컨테이너 대한기본 이미지를 사용합니다. 다른 Windows 컨테이너 기본 이미지(예: Nano Server 및 Windows Server Core)는 인쇄 서버 역할을 수행하지 않습니다.
Hyper-V 격리
Hyper-V 격리를 사용하여 컨테이너를 실행하는 것이 좋습니다. 이 모드에서 실행하면 인쇄 서비스에 대한 액세스 권한으로 실행하려는 만큼의 컨테이너를 가질 수 있습니다. 호스트에서 스풀러 서비스를 수정할 필요가 없습니다.
다음 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:\>
프로세스 격리
프로세스 격리 컨테이너의 공유 커널 특성으로 인해 현재 동작은 호스트 및 모든 컨테이너 자식에서 프린터 스풀러 서비스의 인스턴스 하나만 실행하도록 제한합니다. 호스트에 프린터 스풀러가 실행 중인 경우 게스트에서 프린터 서비스를 시작하려면 먼저 호스트에서 서비스를 중지해야 합니다.
팁
컨테이너를 시작하고 컨테이너와 호스트 모두에서 스풀러 서비스에 대한 쿼리를 동시에 실행하면 둘 다 상태를 '실행 중'으로 보고합니다. 그러나 속지 마세요. 컨테이너는 사용 가능한 프린터 목록을 쿼리할 수 없습니다. 호스트의 스풀러 서비스를 실행하면 안됩니다.
호스트가 프린터 서비스를 실행하고 있는지 확인하려면 아래 PowerShell의 쿼리를 사용합니다.
PS C:\Users\Administrator> Get-Service spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
PS C:\Users\Administrator>
호스트에서 스풀러 서비스를 중지하려면 아래 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:\>