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 を渡そうとすると、未定義の動作が発生する可能性があります。
Hyper-V による分離型 Windows コンテナーのサポート
Hyper-V 分離 Windows コンテナーのワークロードに対するデバイスの割り当てとデバイス共有は、現在サポートされていません。
Hyper-V 分離 Linux コンテナーのサポート
Hyper-V 分離 Linux コンテナーのワークロードに対するデバイスの割り当てとデバイス共有は、現在サポートされていません。