gpt4 book ai didi

user-interface - 在 docker 容器中运行 x-org 时,键盘/鼠标不响应

转载 作者:行者123 更新时间:2023-12-02 18:03:25 28 4
gpt4 key购买 nike

我想为 GUI 应用程序(例如 Chrome)创建一个 docker 镜像,我希望这个 GUI 应用程序可以在没有安装 X 服务器的裸 Linux 服务器上运行。

我知道为 X Window 客户端(GUI 应用程序本身)创建和运行 docker 镜像非常容易。这需要在主机上安装并运行 X 服务器。

sudo docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix xorg xterm -display :0

但对我来说,我需要在 docker 容器中运行 X 客户端和服务器。

这是我的 dockerfile:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y xorg

我通过命令运行图像:
sudo docker run -i -t --rm -e DISPLAY=:0 --privileged xorg xinit

X 服务器可以启动,我的屏幕变黑,几秒钟后,显示 xterm 窗口。但是,我不能使用键盘和鼠标。屏幕好像被卡住了

我已经搜索并尝试了很多解决方案,但没有人能解决这个问题。 (我不需要虚拟 x 服务器)

最佳答案

我已经解决了这个问题。
一开始,我想可能是docker容器中的x server无法访问主机设备,我花了很多时间在LXC/cgroup上。例如,我将 docker exec 引擎更改为 LXC,并添加了选项 '--lxc-conf='lxc.cgroup.devices.allow = c 13:* rwm ',我还创建了 /dev/input/*在容器中。
所有这些操作都是不必要的。
如果我们以特权模式运行 docker 容器,则会自动添加所有主机设备。或者我们可以使用像' --device=/dev/input/mice 这样的选项' 共享主机设备。
真正的问题是 x 服务器无法自动发现和添加设备。我不知道为什么。但是我们可以修改x server的配置,自定义设备。
添加文件/etc/X11/xorg.conf.d/10-input.conf

 Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection

Section "ServerLayout"
Identifier "Desktop"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "Device" "/dev/input/event2"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
并运行 docker 容器:
docker run -i -t -v /tmp/.X11-unix:/tmp/.X11-unix --rm --privileged ubuntu startx

关于user-interface - 在 docker 容器中运行 x-org 时,键盘/鼠标不响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585482/

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