2013-07-22 54 views
10

Tôi có một hình ảnh phát triển hệ thống nhúng có trong một tệp docker. Để flash mã tôi cần kết nối với các nút qua Cổng nối tiếp USB (ví dụ:/dev/ttyACM0).Có thể để thiết bị USB tiếp xúc với hộp chứa lxc/docker không?

Với docker Tôi đã sử dụng tính năng gắn kết mới để (xem tùy chọn https://github.com/dotcloud/docker/issues/111, b hoặc latedly? -v) để hiển thị devfs của máy chủ cho vùng chứa. Tuy nhiên, bất cứ khi nào tôi kết nối ("cat/d/ttyACM0", d là gắn kết gắn kết với dev) với thiết bị, tôi nhận được "hoạt động không được phép". Có thể không chỉ gắn kết gắn kết mà thực sự sử dụng các thiết bị ký tự trong vùng chứa không?

Thậm chí có thể hiển thị các nhà phát triển cụ thể thông qua các quy tắc udev hay không.

Trả lời

2

tùy chọn --device bây giờ cho phép phơi bày một dev vào một container, Eg .:

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

(Tìm thấy từ this SO answer.)

+0

Cảm ơn - Tôi đã sao chép phần thiết yếu ở đây. Tôi tin rằng tôi đã trả lời ít nhất một phần của câu hỏi ("Có thể không chỉ gắn kết gắn kết mà thực sự sử dụng các thiết bị nhân vật trong container?"). – tuomassalo

4

Tại thời điểm hiện tại, điều này là không thể với docker. Tuy nhiên, chúng tôi đang làm việc trên chế độ 'Privilege' cho phép một vùng chứa truy cập các thiết bị như USB hoặc GPU.

0

Trong khi không thể thực hiện thông qua Docker bản thân (xem câu trả lời trước) sử dụng lxc-cgroup trực tiếp trên thùng chạy dường như làm các trick cho tôi:

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

166 là viết tắt cho ttyACM, các lớp thiết bị

id Docker cần phải là người đầy đủ (qua Docker kiểm tra "ID")

+0

BTW: thêm vào config.lxc dường như không làm việc cho tôi – till

+0

Lưu ý rằng nó là nguy hiểm dựa vào Docker và lệnh LXC cùng một lúc. Trong khi docker sử dụng LXC, nó có thể không trong tương lai và không có khả năng tương thích được đảm bảo như xa như tôi biết. – qkrijger