XDummy在Docker容器中
我正在尝试通过使用XDummy驱动程序在Docker容器中运行X11服务器。 但是,我有问题得到它的工作。 预期的目的是执行无头渲染。 我可以使用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时出错了,但是我找不到任何类似的例子。
推荐的程序是什么?
pipe理解决这个,如果其他人正在寻找一个解决scheme。
FROM node:slim ENV DEBIAN_FRONTEND noninteractive ENV DISPLAY :1 RUN mkdir nodeapp \ && apt-get update \ && apt-get -y install xserver-xorg-video-dummy x11-apps COPY App /nodeapp/ RUN cd nodeapp/ \ && npm install ENTRYPOINT [ "node", "/nodeapp/index.js" ]
问题是,apt-get在安装时需要docker容器中的键盘configuration,虚拟软件包提供了所有的依赖关系,所以不需要常规的xorg安装。
最后一个问题是我无法同时启动Xorg和nodeapp,但这是一个简单的解决方法。 我已经使用节点来pipe理服务,所以我把开始Xorg的部分移到了那里。
var args = ["-noreset", "+extension", "GLX", "+extension", "RANDR", "+extension", "RENDER", "-logfile", "./xdummy.log", "-config", "/mplex-core/xorg.conf", ":1"]; this.proc = child_process.spawn("Xorg", args);
我订阅“每个容器的一件事”Docker哲学,所以我修改了你的解决scheme,只做XDummy。 它可以很容易地链接到另一个容器。
从debian:jessie ENV DEBIAN_FRONTEND非交互式 ENV DISPLAY:1 运行apt-get更新\ && apt-get -y install xserver-xorg-video-dummy x11-apps VOLUME /tmp/.X11-unix 复制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
。