如何动态链接到由docker容器中的主机上运行的udev创建的设备的符号链接 [英] How can I dynamically get symlinks to devices created by udev running on Host in a docker container
问题描述
我想动态链接到在Docker容器中在Host上运行的udev创建的设备的符号链接
I want to dynamically get symlinks to devices created by udev running on Host in a docker container
我能够将符号链接绑定到容器,但是如果移除设备(例如,usb已断开连接),则不会动态重新创建符号链接
I was able to bind the symlink to the container but it's not dynamically recreated if the device is removed (e.g: usb is disconnected)
Udev规则示例:
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"
docker run示例:
docker run example:
sudo docker run -v /dev/my_dir/gsm-modem0:/dev/my_dir/gsm-modem0 my_image my_script.sh
推荐答案
答案:
Udev规则应符号链接到新目录:
Udev rule should symlink to a new directory:
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"
正在运行的docker必须包含--privileged:
Running docker must contain --privileged:
sudo docker run --privileged -v /dev/my_dir:/dev/my_dir my_image my_script.sh
和my_script.sh应该首先在创建的符号链接目录中创建一个新文件:
and my_script.sh should start by creating a new file in the created symlink directory:
mkdir -p /dev/my_dir
touch /dev/my_dir/keep
说明:
由于某种原因,udev可能会删除链接目录(如果目录为空),并且由于通常/dev
是一个tmpfs,因此创建新文件将无法重新启动.每次运行都触摸文件将使包含目录的链接保留在主机上,如果创建了新链接,它将出现在容器中
For some reason udev may delete the link directory if the directory is empty, and since usually /dev
is a tmpfs creating new file won't survive restart. Touching a file on every run will keep the link containing directory on host and if a new link is created it will appear on the container
这篇关于如何动态链接到由docker容器中的主机上运行的udev创建的设备的符号链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!