ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – 无法从docker容器启动Java GUI X11会话

2019-08-15 00:00:18  阅读:247  来源: 互联网

标签:java linux docker x11


我无法在docker容器中运行Java GUI应用程序,因此它会出现在我的桌面上,就像xeyes一样.
以下是我要采取的步骤:

我在Unity会话中登录到我的物理机器并打开终端,运行命令:

root@prod:~# echo $DISPLAY 
:0
root@prod:~# ls /tmp/.X11-unix/
X0  X1024

然后我进入VPN并通过SSH连接到主机(名为host-a).
我可以在主机-a中运行xeyes,并且眼睛出现在Unity上,按照我的鼠标左右,因此X转发工作.

a@host-a$echo $DISPLAY
localhost:10.0
a@host-a$sudo netstat -anutp | grep 60
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      21988/6         
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      22182/14        
tcp6       0      0 ::1:6010                :::*                    LISTEN      21988/6         
tcp6       0      0 ::1:6011                :::*                    LISTEN      22182/14

在host-a中,我然后使用docker来运行包含Java应用程序的图像:

a@host-a$sudo docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -ti repo/image bash`

输出是:

root@7722f3167495:/# echo $DISPLAY
localhost:11.0

然后尝试运行Java应用程序给出:

java.awt.AWTError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable.

我已经尝试将DISPLAY设置为10.0但也一样.
我注意到只有本地机器prod包含/tmp/.x11-unix中的套接字.容器和主机-a没有.

有关X会话未建立的任何建议将不胜感激.

解决方法:

这种方式不太可能

X11套接字文件仅用于本地连接,只能在工作站上访问.
从那里它的TCP.

由于您已使用SSH与X11Forwarding SSH连接到服务器主机 – 它已在您的工作站和服务器之间创建了一个tcp连接.当您在服务器上时,这是TCP X11显示“localhost:10”.工作站上的SSH客户端会将流量从那里转发到.X11 unix套接字文件.
我不确定localhost:11显示器的来源,但它也与SSH转发有关.你只做了一个或两个SSH跳?

如果直接在工作站X服务器上启用TCP侦听,则可能会取得更大成功(删除’-nisten tcp’标记,您可能需要添加’-listen tcp’)然后告诉docker容器直接使用工作站显示

docker run .... -e DISPLAY=<workstation-ip-address>:0

但是,您也可能会出现“xauth”错误

您可以使用xauth命令将身份验证令牌导出到服务器上的主目录,然后将其挂载到docker卷以使容器可以访问令牌,并将docker命令中的XAUTHORITY环境变量设置为导出xauth文件,或者在容器中使用xauth导入令牌.

我在gitbub上有一个旧的示例docker容器,用于运行Azureus,我会看看是否可以找到链接

有时,将VNC服务器添加到容器中,在容器中的vnc会话中启动Java应用程序,并使用vnc从工作站连接到它,要容易得多.

或者在docker主机上,您可以运行vnc服务器并使用docker’-net host’来共享主机网络堆栈,并在容器中使用DISPLAY =:5900,并从您的连接到VNC显示主机-a:0工作站.这需要将VNC包添加到容器中

标签:java,linux,docker,x11
来源: https://codeday.me/bug/20190814/1658365.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有