我如何动态获取符号链接到由 udev 运行 在 docker 容器中的主机上创建的设备
How can I dynamically get symlinks to devices created by udev running on Host in a docker container
我想动态获取指向由 udev 运行ning 在 docker 容器中的主机上创建的设备的符号链接
我能够将符号链接绑定到容器,但如果设备被移除(例如:USB 断开连接),它不会动态重新创建
Udev 规则示例:
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"
docker 运行 示例:
sudo docker run -v /dev/my_dir/gsm-modem0:/dev/my_dir/gsm-modem0 my_image my_script.sh
答案:
udev 规则应该 symlink 到一个新目录:
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 应该首先在创建的 symlink 目录中创建一个新文件:
mkdir -p /dev/my_dir
touch /dev/my_dir/keep
解释:
出于某种原因,如果目录为空,udev 可能会删除 link 目录,因为通常 /dev
是一个创建新文件的 tmpfs 将无法在重启后继续存在。在每个 运行 上触摸一个文件将在主机上保留 link 包含目录,如果创建了一个新的 link 它将出现在容器
上
我想动态获取指向由 udev 运行ning 在 docker 容器中的主机上创建的设备的符号链接
我能够将符号链接绑定到容器,但如果设备被移除(例如:USB 断开连接),它不会动态重新创建
Udev 规则示例:
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"
docker 运行 示例:
sudo docker run -v /dev/my_dir/gsm-modem0:/dev/my_dir/gsm-modem0 my_image my_script.sh
答案:
udev 规则应该 symlink 到一个新目录:
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 应该首先在创建的 symlink 目录中创建一个新文件:
mkdir -p /dev/my_dir
touch /dev/my_dir/keep
解释:
出于某种原因,如果目录为空,udev 可能会删除 link 目录,因为通常 /dev
是一个创建新文件的 tmpfs 将无法在重启后继续存在。在每个 运行 上触摸一个文件将在主机上保留 link 包含目录,如果创建了一个新的 link 它将出现在容器