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 バス
A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM ポート
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI バス
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU アクセラレーション
GPU アクセラレーションに関するドキュメントを参照

重要

デバイスのサポートはドライバーによって異なります。 上の表で定義されていないクラス GUID を渡そうとすると、未定義の動作が発生する可能性があります。

Hyper-V で分離された Windows コンテナーのサポート

Hyper-V で分離された Windows コンテナーのワークロードのデバイス割り当てやデバイス共有は、現在サポートされていません。

Hyper-V で分離された Linux コンテナーのサポート

Hyper-V で分離された Linux コンテナーのワークロードのデバイス割り当てやデバイス共有は、現在サポートされていません。