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?
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.)
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.
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").