【问题标题】:Run graphical process in Docker container, detach and reconnect to the running GUI在 Docker 容器中运行图形进程,分离并重新连接到正在运行的 GUI
【发布时间】:2015-12-26 02:29:45
【问题描述】:

假设我在 Python 中有一些计算需要很长时间,并且是从 Spyder IDE 运行的,因此可以轻松检查结果并将其用于以后的进一步工作。

我想在托管在服务器机器上的 Docker 容器内运行 Spyder 进程(即,不是我坐在前面的同一台机器)。我已经看到可以运行 e。 G。 LibreOffice 和 Chrome 就是这样,所以这应该是可能的。但是当用户从容器中分离时,这些进程并没有保持活动状态。

现在的问题是:有没有办法在 Docker 容器中打开 Spyder 进程,手动启动计算,从 Docker 容器中分离,然后重新连接到容器,所以我返回到仍在运行的 Spyder GUI能够检查计算结果并继续使用它们吗?

为了让用户(可能是多人,但每个人都有自己的容器)保持简单,我不希望必须将计算结果保存到文件中并重新读取它们以进行进一步处理。

使用 IPython,我可能可以简单地使用 screen 来保持解释器的运行。但我不知道如何用 Spyder 实现同样的目标。我可以以某种方式将 Spyder 连接到远程 IPython 解释器吗?

解决办法:

感谢@JanSuchotzki,我能够让 X11-VNC-server-container 与安装了 Spyder 的客户端容器一起运行,并且可以使用服务器容器来显示图形。在另外设置环境变量USER 后,我可以成功运行 Spyder。只需要调整 X11-server 的屏幕大小,不要切断 Spyder GUI 的边缘,那么一切正常!

【问题讨论】:

  • 这个hub.docker.com/r/viktran/spyder是spyder吗?
  • @user2915097 我不知道,因为 repo 什么也没说;但如果它包含正确的程序,我很确定它只是用于从 Docker 容器启动它,但并不适合我的应用程序,抱歉。
  • 拨打docker run时尝试添加-e LANG=C.UTF-8。这会将语言设置设置为 UTF8。 debian 映像中没有安装特殊的本地变量(例如 en-US)。我猜它会解决你的问题。在容器内时,您可以使用locale 检查语言设置是什么。我将很快更新图像的 Dockerfile。所以他们已经正确设置了本地人。
  • @JanSuchotzki 我尝试了你的建议,但并没有改变这种情况。但是我查看了 Spyder 的源代码,问题似乎是在客户端容器内没有设置环境变量 USER。于是我做了export USER=xclient,之后Spyder就启动成功了!现在唯一的事情是:Spyder GUI 比我使用 VNC 获得的显示“更宽”,并且 GUI 的右侧部分被切断。垂直地,我可以滚动 VNC 客户端。所以我想问题在于 x11server 容器中的屏幕大小。你知道如何调整屏幕大小吗?
  • @JanSuchotzki 没关系,我发现了它是如何做到的 :-) 我会让你知道它是怎么回事,并接受你的回答!

标签: python docker spyder


【解决方案1】:

在远程机器上运行时,您可能希望使用 VNC 之类的东西。这基本上意味着您运行 Spyder 的容器也可以用作 VNC 服务器。现在您可以通过 VNC-Client 附加到容器并检查当前状态(与您的 IDE 交互)。

这也适用于多用户设置,假设每个容器,或者更好的说法是在其中运行的 VNC 服务器在另一个端口上工作。然后就可以简单的通过端口区分不同的容器了。

我创建了一个基础镜像,用于运行带有 X-Server 和 VNC-Server 的基于 debian 的容器。你可以看看我的Docker-Hub Account。在那里您将找到客户端和服务器的图像。

【讨论】:

  • 感谢您的提示!我最初不想有 VNC 设置的开销。但是,如果您的现有解决方案只需要根据我的需要进行调整(关于需要安装的其他软件),我一定会尝试告诉您它是如何进行的!
【解决方案2】:

我不熟悉 Sypder,但我认为您应该先查看有关 networkingexec 的 Docker 文档。

另一个想法:如果您可以告诉 Spyder 作为服务器运行,您可以通过暴露的端口连接客户端。

【讨论】:

  • 感谢您的提示!我知道可以从运行 Spyder 的客户端计算机访问服务器计算机上的远程 IPython 内核,但我不确定在客户端与内核断开连接后是否可以执行命令并继续运行。这甚至可能是开发人员明确不希望的。我会试试的,然后告诉你结果如何!
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 2015-12-10
  • 2017-03-16
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多