Maison >Opération et maintenance >Docker >Le port série virtuel de Docker est-il possible ?

Le port série virtuel de Docker est-il possible ?

PHPz
PHPzoriginal
2023-04-25 15:56:391693parcourir

Docker est un outil de virtualisation courant pour de nombreux développeurs et administrateurs système. Il peut regrouper de nombreuses applications dans un conteneur pouvant s'exécuter sur toutes les plates-formes sans modification. Cependant, dans certains scénarios d'application, les utilisateurs doivent utiliser un port série ou un périphérique série. Les ports série virtuels de Docker le peuvent-ils également ?

Dans le système d'exploitation Linux, les périphériques de port série sont représentés par les fichiers de périphérique /dev/ttyS0 à /dev/ttyS3. Ils peuvent être utilisés pour connecter des appareils tels que des imprimantes, des modems, des compteurs numériques, etc. Le port série est une méthode de communication simple et fiable. Cependant, dans Docker, le conteneur Docker ne possède pas son propre périphérique matériel physique, le périphérique de port série physique ne peut donc pas être utilisé par défaut.

Cependant, Docker fournit un mécanisme appelé « mappage de périphériques » pour mapper les périphériques virtuels ou physiques de l'hôte à l'intérieur du conteneur Docker. Dans ce cas, vous pouvez simuler la communication série en mappant le périphérique série de la machine hôte dans le conteneur Docker.

Lors du démarrage d'un conteneur Docker, le mappage des appareils peut être réalisé en ajoutant l'option "--device". Par exemple, la commande suivante mappe le périphérique /dev/ttyUSB0 dans le fichier de périphérique /dev/ttyUSB0 du conteneur Docker :

$ sudo docker run -it --name mycontainer --device=/dev/ttyUSB0 ubuntu:latest

Après avoir démarré le conteneur, exécutez la commande suivante à l'intérieur du conteneur pour vérifier que le port série est disponible à l'intérieur du conteneur. :

$ ls -l /dev/ttyUSB0

In L'exécution de la commande suivante dans un conteneur Docker tentera d'ouvrir le périphérique série :

$ minicom -D /dev/ttyUSB0

Si vous n'avez pas de pilote série installé sur l'hôte, le conteneur n'aura pas accès au périphérique. Par conséquent, avant de démarrer le conteneur, installez les pilotes nécessaires.

De plus, bien qu'il soit possible d'utiliser des ports série dans des conteneurs Docker à l'aide du mappage de périphériques, ce n'est pas une solution idéale car le mappage de périphériques sera très délicat si vous devez connecter plusieurs périphériques série en même temps. Dans ce cas, une meilleure solution consiste à utiliser un port série virtuel.

Le port série virtuel est une méthode de simulation de communication par port série en mappant le périphérique de port série hôte à un périphérique de port série virtuel. Ce périphérique série virtuel ressemble à un véritable périphérique série, mais il ne s'agit en réalité que d'un véritable périphérique série qui transmet des données à l'hôte. Dans un conteneur Docker, vous pouvez utiliser des outils tels que socat ou ttyd pour créer des périphériques série virtuels.

Ce qui suit est la commande pour créer un périphérique de port série virtuel à l'aide de socat :

$ sudo socat pty,link=/dev/ttyS0,raw,echo=0 pty,link=/dev/ttyS1,raw,echo=0

Après avoir exécuté cette commande, socat créera deux périphériques de port série virtuels /dev/ttyS0 et /dev/ttyS1, qui peuvent être utilisés pour simuler une série. communications portuaires.

Ensuite, lors du démarrage du conteneur Docker, utilisez la commande suivante pour mapper le port série virtuel à l'intérieur du conteneur :

$ sudo docker run -it --name mycontainer -v /dev/ttyS0:/dev/ttyS0 ubuntu:latest

À l'intérieur du conteneur, vous pouvez essayer d'ouvrir le périphérique /dev/ttyS0 pour la communication série.

Résumé

Bien que Docker ne prenne pas en charge les périphériques série par défaut, vous pouvez utiliser le mappage de périphériques ou des périphériques série virtuels pour simuler la communication série. Lors du choix d'une solution, veuillez noter que le mappage des périphériques peut devenir très problématique lors de la connexion de plusieurs périphériques série, tandis que l'utilisation de ports série virtuels peut facilement réaliser plusieurs connexions de ports série.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn