Xvfb和Docker - 无法打开显示

ove*_*lox 10 firefox xvfb docker dockerfile

我需要使用firefox运行XVFB和docker,但无法让它们一起工作

这是我的Dockerfile:

FROM abevoelker/ruby:latest # based on ubuntu
ENV TERM linux
RUN apt-get update && apt-get install -y .....

ENV DISPLAY :99

# Install Xvfb init script
ADD xvfb_init /etc/init.d/xvfb # default xvfb init.d
RUN chmod a+x /etc/init.d/xvfb

CMD ["firefox"]
Run Code Online (Sandbox Code Playgroud)

我从Firefox获得的错误消息是

 Error: cannot open display: :99
Run Code Online (Sandbox Code Playgroud)

ove*_*lox 12

我通过编写一个启动脚本来解决这个问题:

  1. 启动xvfb
  2. 启动firefox

通过执行脚本CMD允许在容器启动时运行正确的命令序列.

Dockerfile

...
ENV DISPLAY :99

ADD run.sh /run.sh
RUN chmod a+x /run.sh

CMD /run.sh
Run Code Online (Sandbox Code Playgroud)

run.sh

Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
firefox
Run Code Online (Sandbox Code Playgroud)

  • Docker没有内置的服务管理器,因此Xvfb启动脚本在初始示例中没有任何影响.通过将其移动到容器启动时执行的脚本(CMD),可以在容器中正确启动Xvfb. (5认同)
  • 如果您收到“_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be create.”错误或警告,请将“-nolisten unix”传递给命令。`Xvfb :99 -屏幕 0 640x480x8 -nolisten tcp -nolisten unix` (4认同)
  • 为什么将其放入自己的脚本中与原始Dockerfile有什么不同? (3认同)