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



我想动态获取由 udev 创建的设备的符号链接,这些设备在 docker 容器中的主机上运行

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

Udev 规则示例:

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

码头工人运行示例:

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

答案:

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 创建新文件将无法在重新启动后幸存下来。在每次运行时触摸文件将保留包含主机上目录的链接,如果创建了新链接,它将出现在容器上

最新更新