Est-il possible d'exposer un périphérique USB à un conteneur LXC/Docker?

j'ai une image de développement système intégrée contenue dans un fichier Docker. Pour afficher le code, je dois me connecter aux noeuds via USB Serial (par exemple /dev/ttyACM0).

avec Docker j'ai utilisé la nouvelle fonctionnalité bind mount pour (voir https://github.com/dotcloud/docker/issues/111,-b ou plus récemment le -v option) pour exposer les hôtes devfs au conteneur. Cependant, chaque fois que je me connecte ("cat / d/ttyACM0" , D est le support de liaison à dev) au périphérique que j'obtiens "opération non autorisée". Est-il possible non seulement de lier mount, mais aussi d'utiliser des dispositifs de caractères dans le conteneur?

serait-il même possible d'exposer des dévs spécifiques via les règles udev?

11
demandé sur Community 2013-07-22 20:00:39

3 réponses

--device option permet maintenant d'exposer un /dev pour un conteneur, par exemple:

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

(j'ai trouvé de ce Débordement de Pile réponse.)

2
répondu tuomassalo 2018-08-22 18:21:50

pour le moment, ce n'est pas possible avec Docker. Cependant, nous travaillons sur un mode "privilège" qui permettrait à un conteneur d'accéder à des périphériques comme USB ou GPU.

4
répondu creack 2018-08-06 19:48:34

bien que ce ne soit pas possible via Docker lui-même (voir la réponse précédente) utiliser lxc-ggroup directement sur le conteneur courant semble faire l'affaire pour moi:

sudo lxc-cgroup -n 0dd4c652d0740e5ddb6f80e6f2ec2c52dd6435b22c8114c000c58ca9703ebc62 devices.allow "c 166:* rwm"

166 signifie ttyACM, la classe d'appareil.

L'id Docker doit être complet (via Docker inspect "ID").

0
répondu till 2018-08-14 17:07:48