如何从Docker容器中获取主机的udev事件?

时间:2018-04-06 07:14:29

标签: docker events udev

在Docker容器中,我正在寻找一种在主机上获取udev事件的方法 使用udevadm monitor,它仅在容器中发回主机的内核事件。

问题是,是否有办法检测主机的udev事件或将主机事件转发给容器?

2 个答案:

答案 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