Udostępnij za pośrednictwem


Urządzenia w kontenerach w systemie Windows

Domyślnie kontenery systemu Windows mają minimalny dostęp do urządzeń hostów — podobnie jak kontenery systemu Linux. Istnieją pewne obciążenia, w których jest korzystne — a nawet imperatywne — uzyskiwanie dostępu do urządzeń sprzętowych hosta i komunikowanie się z nimi. W tym przewodniku opisano, które urządzenia są obsługiwane w kontenerach i jak rozpocząć pracę.

Warunki wstępne

Aby ta funkcja działała, środowisko musi spełniać następujące wymagania:

  • Host kontenera musi mieć system Windows Server 2019 lub Windows 10 w wersji 1809 lub nowszej.
  • Wersja obrazu podstawowego kontenera musi być 1809 lub nowsza.
  • Kontenery muszą być kontenerami systemu Windows działającymi w trybie izolacji procesów.
  • Host kontenera musi mieć uruchomiony Docker Engine w wersji 19.03 lub nowszej.

Uruchamianie kontenera z urządzeniem

Aby uruchomić kontener z urządzeniem, użyj następującego polecenia:

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

Należy zastąpić {interface class guid} odpowiednim identyfikatorem GUID klasy interfejsu urządzenia , który znajduje się w poniższej sekcji.

Aby uruchomić kontener z wieloma urządzeniami, użyj następującego polecenia i połącz wiele argumentów --device.

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

W systemie Windows wszystkie urządzenia deklarują listę klas interfejsów, które implementują. Przekazując to polecenie do platformy Docker, upewni się, że wszystkie urządzenia, które identyfikują się jako implementujące żądaną klasę, zostaną spakowane do kontenera.

Oznacza to, że nie przypisywania urządzenia z dala od hosta. Zamiast tego host udostępnia go kontenerowi. Podobnie, ponieważ określasz identyfikator GUID klasy, wszystkie urządzenia, które implementują ten identyfikator GUID, zostaną udostępnione kontenerowi.

Jakie urządzenia są obsługiwane

Obecnie obsługiwane są następujące urządzenia (i identyfikatory GUID klasy interfejsu urządzenia):

typ urządzenia
GUID klasy interfejsu
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
magistrala I2C
A11EE3C6-8421-4202-A3E7-B91FF90188E4
port COM
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI Bus
DCDE6AF9-6610-4285-828F-CAAF78C424CC
przyspieszanie procesora GPU DirectX
Zobacz przyspieszenie GPU dokumentacja

Ważny

Obsługa urządzeń jest zależna od sterownika. Próba przekazania identyfikatorów GUID klasy, które nie zostały zdefiniowane w powyższej tabeli, może spowodować niezdefiniowane zachowanie.

Obsługa kontenerów Hyper-V izolowanych w systemie Windows

Przypisywanie urządzeń i udostępnianie urządzeń dla obciążeń w kontenerach Windows izolowanych przez Hyper-V nie jest obecnie obsługiwane.

Obsługa kontenerów Linux izolowanych przez Hyper-V

Obecnie przypisywanie i udostępnianie urządzeń dla obciążeń w kontenerach Linux izolowanych przez Hyper-V nie jest obsługiwane.