RUN命令似乎在Docker中不起作用

时间:2017-08-23 14:35:57

标签: docker xvfb xdotool

我的目的是在Docker中运行一个GUI jar文件,这样我就可以使用xdotool自动执行命令,并可以通过x11vnc查看它。

这是我的Dockerfile:

root@62febbc0b8f9:/# echo $DISPLAY

root@62febbc0b8f9:/# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1 11.7  0.9 4226956 98588 ?       Ssl  14:30   0:01 java -jar /var/bin/program.jar
root        26  0.2  0.0  18188  3268 ?        Ss   14:30   0:00 /bin/bash
root        41  0.0  0.0  15580  2044 ?        R+   14:30   0:00 ps aux
root@62febbc0b8f9:/# 

我用:

运行它
RabbitMQ 4.X

但是在这个容器里面没有定义$ DISPLAY并且没有运行x11vnc和Xvfb

.NetCore

(如果我在bash里面运行这些命令,它可以工作......不知道为什么运行docker build时RUN似乎不起作用)

2 个答案:

答案 0 :(得分:1)

docker使用图层文件系统RUN它为安装创建一个单独的层,它不用于运行程序,但它用于从源代码等下载源代码或构建,例如{ {1}}

你应该这样做是创建一个shell脚本,通常他们称之为bootstrap.sh你将它复制到你的容器RUN mvn package或类似你可以放入此命令的东西

COPY bootstrap.sh /app

进入shell脚本,dockerfile中的最后一个命令将其更改为#!/bin/bash DISPLAY=:1.0 \ && export DISPLAY \ && mkdir /root/.vnc \ && x11vnc -storepasswd 1234 /root/.vnc/passwd \ && Xvfb :1 -screen 0 493x476x8 & \ x11vnc -display :1.0 -usepw -forever & java -jar /var/bin/program.jar 类似的内容

答案 1 :(得分:0)

添加到您的docker run

命令

-v $HOME/.Xauthority:/home/developer/.Xauthority -v /tmp/.X11-unix:/tmp/.X11-unix:ro

如果您需要一些导出,

ENV

指令

专为此而设计,请参阅

https://docs.docker.com/engine/reference/builder/#env