如何动态链接到由docker容器中的主机上运行的udev创建的设备的符号链接 [英] How can I dynamically get symlinks to devices created by udev running on Host in a docker container

查看:53
本文介绍了如何动态链接到由docker容器中的主机上运行的udev创建的设备的符号链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想动态链接到在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆