Windows의 컨테이너에 있는 디바이스

기본적으로 Windows 컨테이너에는 Linux 컨테이너와 마찬가지로 호스트 디바이스에 대한 최소한의 액세스 권한만 부여됩니다. 호스트 하드웨어 디바이스에 액세스하고 통신할 때 도움이 되는 또는 반드시 필요한 특정 워크로드가 있습니다. 이 가이드에서는 컨테이너에서 지원되는 디바이스와 시작하는 방법을 설명합니다.

요구 사항

이 기능이 작동하려면 환경이 다음 요구 사항을 충족해야 합니다.

  • 컨테이너 호스트에서 Windows Server 2019 또는 Windows 10 버전 1809 이상을 실행해야 합니다.
  • 컨테이너 기본 이미지 버전이 1809 이상이어야 합니다.
  • 컨테이너는 프로세스 격리 모드에서 실행되는 Windows 컨테이너여야 합니다.
  • 컨테이너 호스트에서 Docker 엔진 19.03 이상 버전을 실행해야 합니다.

디바이스에서 컨테이너 실행

디바이스에서 컨테이너를 시작하려면 다음 명령을 사용합니다.

docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809

{interface class guid}를 아래 섹션에서 찾을 수 있는 적절한 디바이스 인터페이스 클래스 GUID로 바꿔야 합니다.

여러 디바이스에서 컨테이너를 시작하려면 다음 명령과 문자열을 여러 --device 인수와 함께 사용합니다.

docker run --isolation=process --device="class/{interface class GUID}" --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809

Windows에서는 모든 디바이스가 구현하는 인터페이스 클래스 목록을 선언합니다. 이 명령을 Docker에 전달하면 요청된 클래스를 구현하는 것으로 식별되는 모든 디바이스가 컨테이너로 전달됩니다.

즉, 호스트의 디바이스를 할당하는 것이 아니라 호스트가 컨테이너와 디바이스를 공유하는 것입니다. 마찬가지로, 클래스 GUID를 지정하는 경우 해당 GUID를 구현하는 모든 디바이스를 컨테이너와 공유하게 됩니다.

지원되는 디바이스

현재 지원되는 디바이스(및 디바이스 인터페이스 클래스 GUID)는 다음과 같습니다.

디바이스 유형
인터페이스 클래스 GUID
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
I2C Bus
A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM 포트
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI Bus
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU 가속화
GPU 가속화 문서 참조

중요

디바이스 지원은 드라이버에 따라 다릅니다. 위의 표에 정의되지 않은 클래스 GUID를 전달하려고 시도하면 정의되지 않은 동작이 발생할 수 있습니다.

Hyper-V 격리 Windows 컨테이너 지원

Hyper-V 격리 Windows 컨테이너의 워크로드에 대한 디바이스 할당 및 디바이스 공유는 현재 지원되지 않습니다.

Hyper-V 격리 Linux 컨테이너 지원

Hyper-V 격리 Linux 컨테이너의 워크로드에 대한 디바이스 할당 및 디바이스 공유는 현재 지원되지 않습니다.