栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Docker for GUI环境?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker for GUI环境?

目前,这个问题尚未得到解答,但在Google上的排名很高。其他答案大多是正确的,但有一些警告是我已经学到了很难的方法,并且我想为其他人省下麻烦。

Nasser Alshammari给出的答案是在Docker容器中运行GTK应用程序的最简单(也是最快)的方法-
只需将X服务器的套接字作为Docker卷挂载,然后告诉Docker使用它即可。

docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY TheImage

(我也建议您传递该

-u <username-within-container>
标志,因为以root身份运行X11应用程序并不总是可行,并且通常不建议这样做, 尤其是 在共享会话时)。

这将适用于诸如的应用程序

xterm
以及基于GTK的应用程序。例如,如果您在Firefox(基于GTK)上尝试此操作,它将起作用(请注意,如果您已经在主机上运行Firefox,它将在主机中打开一个新窗口,而不是打开一个新的Firefox实例从容器中)。

但是
,您的答案专门询问PyQT。事实证明,Qt不支持以这种方式共享X会话(或者至少不能很好地支持它)。

如果尝试以这种方式运行基于QT的应用程序,则可能会收到如下错误:

X Error: BadAccess (attempt to access private resource denied) 10  Extension:    140 (MIT-SHM)  Minor oppre: 1 (X_ShmAttach)  Resource id:  0x12dX Error: BadShmSeg (invalid shared segment parameter) 148  Extension:    140 (MIT-SHM)  Minor oppre: 5 (X_ShmCreatePixmap)  Resource id:  0xb1X Error: BadDrawable (invalid Pixmap or Window parameter) 9  Major oppre: 62 (X_CopyArea)  Resource id:  0x2c0000dX Error: BadDrawable (invalid Pixmap or Window parameter) 9  Major oppre: 62 (X_CopyArea)  Resource id:  0x2c0000d

我之所以说“可能”,是因为我没有用足够的Qt应用程序来测试这种方法,或者没有深入研究Qt源代码以弄清楚为什么不支持这种方法。YMMV,您可能会很幸运,但是如果您想在Docker容器中运行基于Qt的应用程序,则可能必须采用“老式”方法,
或者

  1. 在容器中运行sshd,打开X11转发,然后使用

    ssh -X
    (更安全)或
    ssh -Y
    (较不安全, 当您完全信任容器化的应用程序 时才 使用)连接到容器。

  2. 在容器中运行VNC,然后使用VNC客户端从主机连接到该容器。

在这两个选项之间,我会推荐第一个,但请看哪种最适合您的情况。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号