VSCode:如何在远程服务器上的Docker容器中运行Jupyter笔记本?

20

我可以使用 Docker 扩展,并右键单击“附加 shell”到正在运行的容器。然而,我的 Jupyter 笔记本并没有在该容器中运行。

我尝试过搜索如何在 Docker 容器中运行 Jupyter 笔记本,但没有找到任何结果。

如果有区别的话,我正在尝试在远程服务器上的 Docker 容器中运行我的笔记本(使用 VS Code 远程 ssh 登录)。

编辑:

我还尝试在 Jupyter 中运行以下命令:

!docker exec -ti {container name} bash

但是该单元格一直挂起。当我停止单元格时,笔记本仍然没有在容器中运行。

1个回答

9

更新于2022年8月31日: 原始方法现在可能会导致Docker错误:

standard_init_linux.go:228: exec user process caused: no such file or directory

如果您使用系统包而不是从软件库直接下载,则问题得到解决。在Ubuntu的情况下:

RUN apt-get install tini

其余的部分相同:

RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

刚好遇到了同样的问题。似乎你不能直接从容器中运行Jupyter。但是这个链接帮助了我。基本上你需要做以下几步:

  1. 在你的dockerfile中添加以下内容:
# Add Tini. Tini operates as a process subreaper for jupyter. This prevents kernel crashes.
ENV TINI_VERSION v0.6.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

这将在端口8888上启动容器内的Jupyter。因此,在docker-compose或docker run中不要忘记公开此端口。

这在我的本地docker上有效。我可以假设对于SSH docker,您需要在远程连接到本地主机期间转发8888端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接