Windows 컨테이너에서 스풀러 인쇄

인쇄 서비스에 종속된 애플리케이션은 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:\>