在Docker容器中,我正在寻找一种在主机上获取udev事件的方法
使用udevadm monitor
,它仅在容器中发回主机的内核事件。
问题是,是否有办法检测主机的udev事件或将主机事件转发给容器?
答案 0 :(得分:1)
这是我使容器通过udev接收主机事件的方式:
docker run --net=host -v /run/udev/control:/run/udev/control
-net = host允许容器和主机通过PF_NETLINK套接字进行操作,udev监视器使用它来接收内核事件(找到here)
/ run / udev / control是一个文件,udev监视器使用该文件检查udevd是否已在运行。如果不存在,则禁用监视。
答案 1 :(得分:1)
就像上面的答案指出的那样:我们可以启用--net=host
,但是由于多种已知原因,不建议使用host network
。
实际上,发生此问题只是因为它需要NETLINK
在内核和用户空间之间进行通信,但是如果不使用host network
,则主机和容器将位于不同的netns
中,因此启用{容器中的{1}}可以使它们位于相同的netnet中,因此无需使用udev
。
遇到此问题时,我们接下来要做:
host network