我正在为需要直接访问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
上述方法有什么不对?
答案 0 :(得分:1)
Docker的--privileged
在容器内创建一个tmpfs,并重新创建主机/dev
中当前的所有设备节点。但是,它不会创建或更新来自主机/dev
的符号链接。
不过,您可以使用-v /dev:/dev
在容器内绑定mount real / dev,以获取容器内的所有设备和符号链接(需要注意的是,您在容器内公开了实/dev
)。