首页 > 编程语言 >docker + xrfb-run + vnc:Docker里开虚拟屏幕运行带GUI程序

docker + xrfb-run + vnc:Docker里开虚拟屏幕运行带GUI程序

时间:2022-10-14 12:44:52浏览次数:48  
标签:00 run install 里开 GUI auth xvfb env vnc

进入一个平平无奇的ubuntu容器
docker run -it --rm -p5900:5900 ubunut:20.04

安装X组件
apt install -y xserver-xorg
apt install xvfb
apt install x11vnc

以上,就安装完成了。。


以下,是简单示例

【GUI看表】

apt install x11-apps #安了这个就有 xclock 了

xvfb-run xclock #运行 xvfb-run 会自动为 xclock 创建一个虚拟屏幕 然后执行 xclock

这就是运行中了(你看,终端block在那)

怎么看表呢?

先开个新终端

ps -ef |grep auth #这是为了找Auth文件位置

显示:

root@13785a282294:/# ps -ef |grep auth
root        7417    7408  1 11:47 pts/0    00:00:00 Xvfb :99 -screen 0 1280x1024x24 -nolisten tcp -auth /tmp/xvfb-run.RCwemo/Xauthority
root        7449    5837  0 11:47 pts/1    00:00:00 grep --color=auto auth

上面的 /tmp/xvfb-run.RCwemo/Xauthority 就是Auth文件文件名每次都随机生成
上面的 Xvfb :99 这部分的:99 就是虚拟屏幕号 默认是99

启动vnc-server

x11vnc -display :99 -auth /tmp/xvfb-run.RCwemo/Xauthority  # 注意要用到上面查到的那个Auth文件路径

启动完了 x11vnc 默认监听端口是 5900

然后使用VNC客户端 比如:TightVNC

就能看表了!

感觉很空是吧,因为xvfb-run默认给了个 1280x1024 的屏幕 

修改启动参数指定想要的屏幕大小就可以了(还有色彩深度)

xvfb-run  --server-args="-screen 0 200x200x24" xclock

 以上,就是简单示例应该够用了


 

以下,是个稍微炫一点的简单示例:

用强化学习方法让机器学习怎么玩儿游戏的时候会用到GYM环境,以下是个简单的登月游戏运行示例,这样就可以在服务器上训练,同时还方便围观训练进度 。。

还是继续用上面那个docker容器

【Gym LunarLander-v2 围观示例】

先搞定基本环境 (ubuntu20.04 docker 镜像自带python3.8)

ln -s /usr/bin/python3 /usr/bin/python     # 这样就可以直接用python命令了。。

安装pip

apt install python3-pip

安装gym (安装过程报错,要先安swig : apt install swig)

pip install gym[box2d]

然后就可以开干了

xvfb-run python  # 这样当你python里面需要用到屏幕界面的就可以在vnc上看到了

更直接的,弄个Gym的玩游戏演示demo程序展示效果

# test.py
import gym
env = gym.make("LunarLander-v2", render_mode="human")
env.action_space.seed(42)

observation, info = env.reset(seed=42)

for _ in range(1000):
    observation, reward, terminated, truncated, info = env.step(env.action_space.sample())

    if terminated or truncated:
        observation, info = env.reset()

env.close()

启动:

xvfb-run python test.py 

观察效果:(新终端,注意auth文件路径变了哈)

x11vnc -display :99 -auth /tmp/xvfb-run.l3kR51/Xauthority

 开vnc-client:

 

标签:00,run,install,里开,GUI,auth,xvfb,env,vnc
From: https://www.cnblogs.com/tugeler/p/16791259.html

相关文章