docker运行GUI图形的方法
发布时间:2020-12-20 07:30:13 阅读:425

docker运行GUI图形的方法

关键点 x11,DISPLAY,xhost +

步骤

  1. 宿主机安装x11-xserver-utils
$ sudo apt-get install x11-xserver-utils
  1. 打开x11任意来源连接"开关"
    这是由于X11服务默认只允许『来自本地的用户』启动的图形程序将图形显示在当前屏幕上
$ sudo vim /etc/lightdm/lightdm.conf      
# 增加  xserver-allow-tcp=true
$ sudo systemctl restart lightdm
$ xhost  +
#每次重新开机后都要运行

参数『+』表示允许任意来源的用户。

  1. 运行docker
docker run -it 
-e DISPLAY=${DISPLAY}  
-v /tmp/.X11-unix:/tmp/.X11-unix  
--name [containername] 
[yourimage] 
/bin/bash
# 忽略其他参数 -e 和 -v 是重要的
  1. docker中运行GUI
$ sudo apt-get install xarclock
$ xarclock

原理

X11服务的图形显示原理是在服务端和客户端之间构建一组Server/Client,X11通过『DISPLAY』环境变量来指定将图形显示到何处。

基于这个原理,将Docker中的GUI程序显示到外面,就是通过某种方式把X11的客户端的内容从容器里面传递出来。方法有两种

通过SSH连接或远程控制软件,最终通过tcp套接字将数据发送出来
让容器和主机共享X11的unix套接字,直接将数据发送出来
从应用场景上划分,又可以分成两类情况:『运行本地的GUI程序』和『运行远程服务器上的GUI程序』。这两类情况在操作上很相似,但前者可以使用unix套接字,而后者必然要使用tcp套接字转发,原理上有很大差别。

参考博客https://www.csdn.net/article/2015-07-30/2825340

发表评论
使用 Nuxt 3 构建 | 部署于 Kubernetes | 托管于 狗云
Copyright © 2020-2024 | 网站已续航 1730 天