在Docker容器中运行图形流程,断开并重新连接到正在运行的图形用户界面

2022-04-05 00:00:00 python docker spyder

问题描述

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

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

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

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

使用IPython,我可能只需使用Screen来保持解释器的活动状态。但我不知道如何用Spyder实现同样的目标。我可以以某种方式将Spyder"连接"到远程IPython解释器吗?

解决方案:

感谢@JanSuchotzki,我能够让X11-VNC-SERVER-CONTAINER与安装了Spyder的客户机容器一起运行,它可以使用服务器容器来显示图形。在额外设置了环境变量USER之后,我就能够成功运行Spyder了。只需要调整X11服务器的屏幕大小,不切断Spyder图形用户界面的边缘,一切都很好!


解决方案

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

这也适用于多用户设置,假设每个容器,或者更确切地说,内部运行的VNC服务器在另一个端口上工作。然后您可以简单地根据港口区分不同的集装箱。

我已经创建了一个基本映像,用于使用X-Server和VNC-Server运行基于Debian的容器。你可以在我的Docker-Hub Account上看看。在那里您将找到客户端和服务器的映像。

相关文章