在Docker容器中运行图形化流程,分离并重新连接到正在运行的GUI

时间:2015-09-28 18:55:52

标签: python docker spyder

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

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

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

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

使用IPython,我可以简单地使用屏幕来保持解释器的活着。但我不知道如何与Spyder实现同样的目标。我可以以某种方式将Spyder“连接”到远程IPython解释器吗?

解决方案:

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我对Sypder并不熟悉,但我认为您首先要查看有关networkingexec的Docker文档。

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