处于特权模式的Docker容器未显示udev符号链接

时间:2016-05-24 20:42:40

标签: docker udev

我正在为需要直接访问caches_action的应用程序运行docker容器。因为我正在使用select Machine_Product as Booth_Product, Machine_Price as Booth_Price from MachineTable union select Booth_Product, Booth_Price from BoothTable 运行容器,以允许它访问主机的/dev/ttyACM0

  

当操作员执行docker run --privileged时,Docker将启用   访问主机上的所有设备以及设置一些配置   在AppArmor或SELinux中允许容器几乎全部相同   作为进程在容器外部运行的进程访问主机   主机。

     

https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities

但是,设备有时会在主机(--privileged/dev)上使用不同的名称,这会根据路径/dev/ttyACM1静态崩溃Docker应用程序。

因此,我创建了一个udev规则,始终将设备映射到主机上的/dev/ttyACM2,而不管/dev/ttyACM0是什么。但是,容器中无法访问设备的链接。

/dev/mydevice

上述方法有什么不对?

1 个答案:

答案 0 :(得分:1)

Docker的--privileged在容器内创建一个tmpfs,并重新创建主机/dev中当前的所有设备节点。但是,它不会创建或更新来自主机/dev的符号链接。

不过,您可以使用-v /dev:/dev在容器内绑定mount real / dev,以获取容器内的所有设备和符号链接(需要注意的是,您在容器内公开了实/dev)。