docker容器处理GUI应用程序
2022/3/19 14:28:15
本文主要是介绍docker容器处理GUI应用程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近在项目中遇到个问题,由于项目中用到了java调用C++的QT程序,而QT程序是需要依赖GUI的,因此将该服务打包成docker镜像后
再启动,发现一致报qt的相关错误,一直以为是qt的编译错误,花了几天时间,最终定位到,原来是docker应用中如果依赖GUI,就会导致
该问题。
原因简单理解就是:docker设计之初,就是一款无界面的服务应用
那如果我们要使用GUI怎么办呢?其实很简单,就是将宿主机的GUI,共享给docker服务即可。
思路原理:主流服务器都支持x11界面服务 x11支持(客户端/服务器模式),根据这个模式,可以将docker中需要显示的部分转换到宿主机来实现
实现步骤:
a) 判断是否安装x11服务器相关库,没安装,则需要先安装库程序
b) xhost + 开启权限,表示所有用户都可以访问宿主机的显示系统
c) 启动docker容器的时候增加以下配置命令即可
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e GDK_SCALE \
-e GDK_DPI_SCALE \
如果宿主机无UI界面,其实很多服务器基本都是这种配置,对于这种情况,可通过如下操作来处理:
首先必须通过ssh -X root@ip的方式连接到服务器、但是这种模式,docker必须使用host网络模式,不能使用默认的bridge模式
但是由于我的docker容器较多,之间的访问也是直接使用了docker网桥,通过子网模式来相互访问的,因此改为host模式后,
需要将原来子网通信的ip修改为主机ip即可
启动docker容器的时候增加以下配置命令即可
-v /etc/localtime:/etc/localtime:ro \
--net=host \
-e DISPLAY=:10.0 \
-v $HOME/slides:/root/slides \
-e GDK_SCALE \
-e GDK_DPI_SCALE \
这篇关于docker容器处理GUI应用程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-17docker 里面的postgis没有中文支持,如何解决?-icode9专业技术文章分享
- 2024-11-17宿主机上开了阿里云的代理,在docker容器内ping不通阿里云的内网ip什么原因?-icode9专业技术文章分享
- 2024-11-17怎么配置docker dns?-icode9专业技术文章分享
- 2024-11-15在树莓派上用Docker-in-Docker模拟Docker Swarm集群
- 2024-11-14Docker端口:你真的公开了哪些东西?
- 2024-11-14用DOCKER在家里的实验室里搞些酷炫的玩意儿
- 2024-11-05掌握Docker:高效安全的十大最佳实践
- 2024-11-05在 Docker Compose 中怎么设置端口映射-icode9专业技术文章分享
- 2024-11-05在 Docker Compose 中怎么设置环境变量-icode9专业技术文章分享
- 2024-11-04Docker环境部署项目实战:新手入门教程