如何动态链接到由docker容器中的主机上运行的udev创建的设备的符号链接

时间:2019-04-16 16:36:19

标签: docker udev

我想动态链接到由运行在docker容器中的Host上的udev创建的设备的符号链接

我能够将符号链接绑定到容器,但是如果移除设备(例如:usb已断开连接),则不会动态重新创建符号链接

Udev规则示例:

SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"

docker run示例:

sudo docker run -v /dev/my_dir/gsm-modem0:/dev/my_dir/gsm-modem0 my_image my_script.sh

1 个答案:

答案 0 :(得分:0)

答案:

Udev规则应符号链接到新目录:

SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"

正在运行的docker必须包含--privileged:

sudo docker run --privileged -v /dev/my_dir:/dev/my_dir my_image my_script.sh

和my_script.sh首先应在创建的符号链接目录中创建一个新文件:

mkdir -p /dev/my_dir
touch /dev/my_dir/keep

说明:

由于某种原因,udev可能会删除链接目录(如果该目录为空),并且由于通常/dev是tmpfs创作,因此新文件将无法在重启后继续运行。每次运行都触摸文件将使包含目录的链接保留在主机上,如果创建了新链接,它将出现在容器中