I'm trying to run a Docker container with access to a serial port on the host.
Here is what I did:
- I used a Mac
- Installed drivers on the host (http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41)
- Plugged in the device
- Ran
ls /dev/t*
that returned/dev/tty.usbserial
- so it worked - Ran the container,
docker run -it --privileged -v /dev:/dev node:4.4.0 /bin/bash
, and thenls /dev/t*
inside the container which didn't return the/dev/tty.usbserial
device...
I played a lot with different variations of parameters, but I haven't found the working one :)
Also the --device
flag is not suitable for me since the device might be reconnected and the name could differ from /dev/tty.usbserial
.
As pointed by @pgayvallet on GitHub:
You can check if the script described in "Notification of new USB devices in docker container" (from Guido Diepen --
gdiepen
) can help.He too runs his container with the
--privileged
argument to allow it to access the devices. And he mounts the host directory/dev/bus/usb
to the/dev/bus/usb
directory within the container with the argument-v /dev/bus/usb:/dev/bus/usb
when starting said container.The script uses both
inotifywait
andlsusb
to wait for devices to be (un)plugged and check if it was the device we are interested in.See also, once you have detected an plugged USB device, How to get Bus and Device relationship for a
/dev/ttyUSB
(not related to Docker, but still relevant).