我可以使用 docker 扩展,然后右键单击“附加 shell”到正在运行的容器。但是,我的 Jupyter 笔记本没有在该容器中运行。
我尝试谷歌搜索如何在 docker 容器中运行 jupyter 笔记本,但没有得到任何结果。
如果有什么不同,我正在尝试在远程服务器上的 docker 容器中运行我的笔记本(使用 VS Code 远程 ssh 登录)
编辑:
我也尝试过跑步
!docker exec -ti {container name} bash
在 jupyter 中,但该单元格只是挂起。当我停止单元时,笔记本仍然没有在容器中运行。
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。但是这个链接帮助了我。基本上你需要的是:
# 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 中公开此端口。
这在我当地的码头工人中对我有用。我可以假设对于 SSH docker,您需要在从远程 SSH 连接到本地主机期间转发 8888 端口。
有可能
第 1 步:ssh 到远程服务器
$ ssh username@server_ip_address
第2步:在远程服务器中运行它
使用端口分配运行 docker
将 image:version 替换为你的 docker 镜像 ID
$ docker run --gpus all -it -p 8888:8888 image:version
Step3:在 docker 中运行它
启动 jupyter 笔记本
$ jupyter notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root
第四步:在本地系统中运行它
从远程服务器到本地系统的端口转发
$ ssh -N -L 8888:localhost:8888 username@server_ip_address
第5步:
通过桌面浏览器访问 http://localhost:8888 笔记本将提示您输入在创建笔记本时生成的令牌,您可以在步骤 3 中找到该令牌