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

比方说,我在Python中有一些计算需要很长时间,并且是从Spyder IDE运行的,因此可以很容易地检查结果,并在之后用于进一步的工作。

我想运行一个服务器机器上托pipe的Docker容器内的Spyder进程(也就是我不在前面的机器)。 我已经看到,像这样可以运行例如LibreOffice和Chrome,所以这应该是可能的。 但是,当用户从容器中分离时,这些过程不会保持活跃状态​​。

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

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

通过IPython,我可以简单地使用屏幕来保持解释器的活跃。 但是我不知道如何用Spyder实现同样的function。 我可能以某种方式“连接”Spyder到一个远程IPython解释器?

解决scheme:

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

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

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

我创build了一个用X-Server和VNC-Server运行基于debian的容器的基础镜像。 您可以看看我的Docker-Hub帐户 。 在那里你会find一个客户端和服务器的图像。

我对Sypder并不熟悉,但是我想你会首先看看有关networking和执行的Docker文档。

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