【发布时间】: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 没关系,我发现了它是如何做到的 :-) 我会让你知道它是怎么回事,并接受你的回答!