دسترسی به USB میزبان در داکر
استفاده از فلگ --device:
یکی از روشهای متداول برای فراهم کردن دسترسی به دستگاههای USB، استفاده از فلگ --device
است. به عنوان مثال، برای دسترسی به دستگاه /dev/ttyUSB0
، میتوانید از دستور زیر استفاده کنید:
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash
این روش به شما اجازه میدهد فقط به یک دستگاه خاص دسترسی داشته باشید و نیازی به دسترسی به تمامی دستگاهها نیست.
استفاده از حالت --privileged:
اگر میخواهید به تمامی دستگاهها در زیرپوشه /dev/bus/usb
دسترسی داشته باشید، میتوانید حالت --privileged
را فعال کرده و آوردههای USB را به کانتینر متصل کنید:
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu bash
توجه داشته باشید که این گزینه به طور بالقوه میتواند امنیت را به خطر بیاندازد، زیرا دسترسیهای بسیاری را فراهم میآورد.
استفاده از cgroup devices.allow:
برای استفاده از دستگاههایی که بعد از اجرای کانتینر به سیستم وصل شدهاند، میتوانید از روش cgroup استفاده کنید. برای این کار، باید شناسه دستگاه را پیدا کرده و آن را به devices.allow
اضافه کنید:
echo 'c 188:* rwm' > /sys/fs/cgroup/devices/docker/$A*/devices.allow
سپس کانتینر را با استفاده از دستور زیر راهاندازی کنید:
docker run -v /dev/bus:/dev/bus:ro -v /dev/serial:/dev/serial:ro -i -t --entrypoint /bin/bash debian:amd64
با این روش، دسترسی به هر دستگاهی که بعد از شروع کانتینر متصل شده باشد، فراهم میشود.
نکات اضافی
- توجه به امنیت: در حالی که استفاده از
--privileged
و-v /dev:/dev
میتواند به راحتی دسترسی به دستگاهها را فراهم کند، این گزینهها همچنین ممکن است منجر به دسترسی ناخواسته به سایر دستگاههای حساس شوند. - دستگاههای متصل شده مجدد: اگر USB شما unplug و دوباره plug شود، با استفاده از پرچم
--device
ممکن است نیاز باشد که کانتینر را دوباره راهاندازی کنید.