gpt4 book ai didi

docker - 如何动态获取 udev 创建的设备的符号链接(symbolic link),该设备在 docker 容器中的主机上运行

转载 作者:行者123 更新时间:2023-12-02 19:59:02 26 4
gpt4 key购买 nike

我想动态获取 udev 创建的设备的符号链接(symbolic link),该设备在 docker 容器中的主机上运行

我能够将符号链接(symbolic link)绑定(bind)到容器,但如果设备被移除(例如: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 规则应该符号链接(symbolic link)到一个新目录:

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 应该首先在创建的符号链接(symbolic link)目录中创建一个新文件:
mkdir -p /dev/my_dir
touch /dev/my_dir/keep

解释:

出于某种原因,如果目录为空,udev 可能会删除链接目录,因为通常 /dev是一个创建新文件的 tmpfs 将无法在重新启动后继续存在。每次运行时触摸文件将保留包含主机上的目录的链接,如果创建新链接,它将出现在容器上

关于docker - 如何动态获取 udev 创建的设备的符号链接(symbolic link),该设备在 docker 容器中的主机上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55712894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com