gpt4 book ai didi

linux - libinput 在 docker 容器中

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:38 25 4
gpt4 key购买 nike

与我之前的帖子“No input enabled while running QT app in docker container on Raspberry PI”相关的问题:在 Raspberry Pi 3 (Ubuntu Mate) 上运行的 docker 容器 (Ubuntu 16.04) 中的 libinput 似乎存在问题:libinput-list-devices 在我运行时不返回任何内容在容器中运行它,而当我在 RP3 本身上运行时它会返回正确的设备。我对 Linux 上的 UI 还很陌生,所以可能会遗漏一些简单的东西——感谢任何帮助。

最佳答案

默认情况下,Docker 容器无法访问任何主机设备。 Libinput 告诉您真相——容器无法看到连接到主机的任何输入设备。

您可以使用 --device 参数将特定设备暴露给您的容器 docker run。您可以使用 --privileged 标志公开主机上的所有 设备,这会禁用 Docker 实现的大部分保护措施(即,应谨慎使用).

例如,在我的主机上我有:

# ls /
by-id event0 event10 event12 event14 event16 event3 event5 event7 event9 mouse0
by-path event1 event11 event13 event15 event2 event4 event6 event8 mice

如果我启动一个普通容器,这些设备都不可见:

# docker run -it --rm fedora bash
[root@9582799320ff /]# ls /dev/input
ls: cannot access '/dev/input': No such file or directory

但是如果我将该设备暴露给容器:

# docker run -it --rm --device /dev/input/event3 fedora bash

我明白了:

[root@bcca19a2341b /]# ls /dev/input/
event3

我可以打开该设备并与之交互。

请注意,即使像这样公开输入设备,发现(例如,libinput list-devices)如果没有额外的配置。 libput list-devices 命令依赖于/run/udev/data 中的信息,这些信息没有暴露在默认情况下的容器。您可以使用 -v 参数公开它docker 运行:

# docker run -it --rm --device /dev/input/event3 \
-v /run/udev/data:/run/udev/data fedora bash

现在发现有效:

[root@e897d760a147 /]# libinput list-devices
Device: daskeyboard
Kernel: /dev/input/event3
Group: 1
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a

关于linux - libinput 在 docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com