Appareils dans les conteneurs sur Windows
Par défaut, les conteneurs Windows bénéficient d’un accès minimal aux appareils hôtes tels que des conteneurs Linux. Cela est bénéfique, voire impératif, pour permettre à certaines charges de travail d’accéder à des appareils hôtes et de communiquer avec ceux-ci. Ce guide traite des appareils pris en charge dans des conteneurs et de leur prise en main.
Conditions requises
Pour que cette fonctionnalité soit opérationnelle, votre environnement doit satisfaire aux exigences suivantes :
- L’hôte de conteneur doit exécuter Windows Server 2019 ou Windows 10, version 1809 ou ultérieure.
- La version de l’image de base du conteneur doit être 1809 ou une version ultérieure.
- Vos conteneurs doivent être des conteneurs Windows s’exécutant en mode isolé par processus.
- L’hôte de conteneur doit exécuter Docker Engine, version 19.03 ou plus récente.
Exécuter un conteneur avec un appareil
Pour démarrer un conteneur avec un appareil, utilisez la commande suivante :
docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
Vous devez remplacer {interface class guid}
par un GUID de classe d’interface d’appareil approprié, que vous trouverez dans la section ci-dessous.
Pour démarrer un conteneur avec plusieurs appareils, utilisez la commande suivante en enchaînant plusieurs arguments --device
:
docker run --isolation=process --device="class/{interface class GUID}" --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
Dans Windows, tous les appareils déclarent une liste de classes d’interface qu’ils implémentent. En transmettant cette commande à Docker, il s’assure que tous les appareils qui s’identifient comme implémentant la classe demandée seront raccordés dans le conteneur.
Cela signifie que vous n’affectez pas l’appareil en dehors de l’hôte. Au lieu de cela, l’hôte le partage avec le conteneur. De même, étant donné que vous spécifiez un GUID de classe, tous les appareils qui implémentent celui-ci seront partagés avec le conteneur.
Quels sont les appareils pris en charge ?
Les appareils pris en charge aujourd’hui (et leurs GUID de classe d’interface d’appareil) sont les suivants :
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
Important
La prise en charge des appareils dépend du pilote. Toute tentative de transmettre des GUID de classe non définis dans le tableau ci-dessus peut entraîner un comportement imprévisible.
Prise en charge de conteneur Windows isolé par Hyper-V
L’attribution et le partage d’appareil pour les charges de travail dans des conteneurs Windows isolés par Hyper-V ne sont pas prises en charge actuellement.
Prise en charge de conteneur Linux isolé par Hyper-V
L’attribution et le partage d’appareil pour les charges de travail dans des conteneurs Linux isolés par Hyper-V ne sont pas prises en charge actuellement.