2015-09-28 50 views
1

假设我在Python中有一些计算需要很长时间,并且从Spyder IDE运行,因此可以轻松检查结果并将其用于进一步的工作之后。在Docker容器中运行图形过程,分离并重新连接到正在运行的GUI

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

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

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

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

解决办法:

感谢@JanSuchotzki,我能得到一个X11-VNC服务器容器一起运行在安装Spyder的客户容器中,并且可以使用服务器容器用于显示图形。在额外设置环境变量USER后,我能够成功运行Spyder。只需调整X11服务器的屏幕大小,不要切断Spyder GUI的边缘,那么一切都很好!

+0

is spyder this https://hub.docker.com/r/viktran/spyder/? – user2915097

+0

@ user2915097我不知道,因为回购没有告诉任何事情;但如果它包含正确的程序,我很确定它只是从Docker容器启动它,但不适合我的应用程序,对不起。 – mindm49907

+0

尝试在您调用docker run时添加'-e LANG = C.UTF-8'。这会将语言设置设置为UTF8。在debian映像中没有安装特殊的本地文件(例如en-US)。我猜想它会解决你的问题。当在容器中时,你可以用locale检查语言设置。我将尽快为映像更新Dockerfiles。所以他们已经适当地设置了当地人。 –

回答

1

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

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

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

+0

感谢您的提示!我原本希望不会有VNC设置的开销。但是,如果您的现有解决方案只需要适应我的需求(关于需要安装的其他软件),我一定会试着告诉您它是如何实现的! – mindm49907

0

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

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

+0

谢谢你的提示!我知道在运行Spyder的客户机上可以访问服务器上的远程IPython内核,但我不确定在客户机与内核断开连接后是否可以执行并保持运行。这甚至可能是开发人员明确不希望的东西。我会尝试,并告诉你它是如何去的! – mindm49907

相关问题