2013-07-22 31 views
10

Mam obraz rozwoju systemu osadzonego zawartego w pliku dokowania. Aby wykonać flashowanie kodu, muszę połączyć się z węzłami przez USB Serial (np./Dev/ttyACM0).Czy można odsłonić urządzenie USB do kontenera LXC/Docker?

Z dockerem użyłem nowej funkcji wiązania bindowania do (zobacz https://github.com/dotcloud/docker/issues/111, -b lub latedly? -v opcji), aby odsłonić devfs hostów do kontenera. Jednak zawsze, gdy się połączę ("cat/d/ttyACM0", d jest mocnikiem bind do dev) do urządzenia otrzymuję "operacja niedozwolona". Czy można nie tylko mocować mocowanie, ale w rzeczywistości używać urządzeń znakowych w kontenerze?

Czy możliwe jest nawet zdemaskowanie określonych deweloperów za pomocą reguł gry udev.

Odpowiedz

2

opcja --device obecnie umożliwia wystawienie dev do pojemnika, np .:

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

(Found od this SO answer.)

+0

Dzięki - tutaj skopiowałem niezbędną część. Sądzę, że odpowiedziałem przynajmniej na część pytania ("Czy można nie tylko mocować mocowanie, ale faktycznie używać urządzeń znaków w kontenerze?"). – tuomassalo

4

W obecnej chwili nie jest to możliwe w przypadku okna dokowanego. Pracujemy jednak nad trybem "przywileju", który umożliwiłby kontenerowi dostęp do urządzeń takich jak USB lub GPU.

0

Chociaż nie jest to możliwe poprzez samą dokowanym (patrz poprzednia odpowiedź) używając lxc-cgroup bezpośrednio nad systemem pojemnika wydaje rade dla mnie:

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

166 oznacza ttyACM, klasę urządzeń

identyfikator dokowanym musi być kompletna jeden (przez dokowanym kontrolować „id”)

+0

BTW: dodawanie do config.lxc nie wydają się działać dla mnie – till

+0

Należy pamiętać, że jest to niebezpieczne polegać na docker i poleceń LXC w tym samym czasie. Podczas gdy docker korzysta z LXC, może nie w przyszłości i nie gwarantuje zgodności, o ile wiem. – qkrijger