次の方法で共有


Windows 上のコンテナー内のデバイス

既定では、Windows コンテナーには、Linux コンテナーと同様に、ホスト デバイスへの最小限のアクセス権が付与されます。 特定のワークロードでは、ホスト ハードウェア デバイスにアクセスして通信するために有益なワークロードや命令型ワークロードが存在します。 このガイドでは、コンテナーでサポートされているデバイスと開始する方法について説明します。

前提 条件

この機能を機能させるには、環境が次の要件を満たしている必要があります。

  • コンテナー ホストは、Windows Server 2019 または Windows 10 バージョン 1809 以降を実行している必要があります。
  • コンテナーの基本イメージのバージョンは 1809 以降である必要があります。
  • コンテナーは、プロセス分離モードで実行されている Windows コンテナーである必要があります。
  • コンテナー ホストで Docker Engine 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 バス
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU アクセラレーション
GPU アクセラレーション ドキュメントを参照してください

重要

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

Hyper-V による分離型 Windows コンテナーのサポート

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

Hyper-V 分離 Linux コンテナーのサポート

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