我的目的是在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似乎不起作用)
答案 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
指令
专为此而设计,请参阅