docker - Docker 容器中的 XDummy

标签 docker xorg headless xserver

我正在尝试使用 XDummy 驱动程序在 docker 容器内运行 X11 服务器。但是,我无法让它工作。预期目的是执行 headless (headless)渲染。我可以使用 Xvfb 让它工作,但我需要 RANDR 支持,最终也需要 GL 支持。

Dockerfile:

FROM node:slim

RUN mkdir nodeapp \
    && apt-get update \
    && apt-get install -y xorg \
    && apt-get install -y xserver-xorg-video-dummy x11-apps

COPY App /nodeapp/

ENV DISPLAY :1

RUN cd nodeapp/ \
    && npm install \
    && Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile /nodeapp/xdummy.log -config /nodeapp/xorg.conf start :1 &

ENTRYPOINT [ "node", "/nodeapp/index.js" ]

xorg.conf 文件是基本的 Xdummy xorg.conf

但是,xserver 无法启动,日志文件也没有提供任何有用的信息,但我确信在 Dockerfile 中设置 Xorg 时我做错了,但我找不到任何类似的示例。

完成这项工作的推荐程序是什么?

最佳答案

我赞同“每个容器一件事”的 Docker 理念,所以我修改了您的解决方案,只做 XDummy。它可以很容易地链接到另一个容器。

FROM debian:jessie

ENV DEBIAN_FRONTEND noninteractive
ENV DISPLAY :1

RUN apt-get update \
    && apt-get -y install xserver-xorg-video-dummy x11-apps

VOLUME /tmp/.X11-unix

COPY xorg.conf /etc/X11/xorg.conf

CMD ["/usr/bin/Xorg", "-noreset", "+extension", "GLX", "+extension", "RANDR", "+extension", "RENDER", "-logfile", "./xdummy.log", "-config", "/etc/X11/xorg.conf", ":1"]

然后要访问,链接 /tmp/.X11-unix 卷并在您的环境中设置 DISPLAY=:1

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

相关文章:

Docker daemon.json --privileged

docker - Docker不赞成使用的链接选项的警告消息

linux - xprop 设置原子属性的多个字段

opengl-es - 如何增加台面驱动程序的 GL_MAX_TEXTURE_SIZE?

node.js - 如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志

c - Xorg 中的全屏窗口不会导致键盘事件

在 Xlib 中捕获按钮事件,然后将事件传递给客户端

java - 如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 以进行 Selenium 测试

docker - 是否可以在无 GUI 的服务器上运行嵌入 GUI 环境的 docker 容器并从远程 GUI 客户端打开 GUI session ?

mysql - SQLException : Access denied when connecting to mysql in docker