python - Jupyter 在 docker 容器中启动内核?
问题描述
我想在不同的内核之间轻松切换我的笔记本。一个用例是在tensorflow 2、2.2、2.3中快速测试一段代码,类似的用例还有很多。但是,我现在更喜欢将我的环境定义为 docker,而不是不同的(conda)环境。
现在我知道您可以在容器中启动 jupyter,但这不是我想要的。我只想单击Kernel > use kernel > TF 2.2 (docker)
,然后让 jupyter 连接到在此容器中运行的内核。
周围有这样的吗?我曾经livy
通过 ssh 连接到远程 spark 内核,所以感觉这应该是可能的。
解决方案
完全披露:我是 Dockernel 的作者。
通过使用Dockernel
将以下内容放在一个名为 的文件Dockerfile
中,在一个单独的目录中。
FROM python:3.7-slim-buster
RUN pip install --upgrade pip ipython ipykernel
CMD python -m ipykernel_launcher -f $DOCKERNEL_CONNECTION_FILE
然后发出以下命令:
docker build --tag my-docker-image /path/to/the/dockerfile/dir
pip install dockernel
dockernel install my-docker-image
在 Jupyter 中创建新笔记本时,您现在应该会看到“my-docker-image”选项。
手动
无需太多额外的实现/工具就可以做这种事情,它只需要一些手动工作:
- 使用以下内容
Dockerfile
:
FROM python:3.7-slim-buster
RUN pip install --upgrade pip ipython ipykernel
使用构建图像
docker build --tag my-docker-image .
为您的内核规范创建一个目录,例如
~/.local/share/jupyter/kernels/docker_test
(%APPDATA%\jupyter\kernels\docker_test
在 Windows 上)将以下内核规范放入
kernel.json
您创建的目录中的文件中(Windows 用户可能需要稍作更改argv
)
{
"argv": [
"/usr/bin/docker",
"run",
"--network=host",
"-v",
"{connection_file}:/connection-spec",
"my-docker-image",
"python",
"-m",
"ipykernel_launcher",
"-f",
"/connection-spec"
],
"display_name": "docker-test",
"language": "python"
}
Jupyter 现在应该能够使用上面指定的 docker 映像启动容器。
推荐阅读
- button - Netsuite:如何将“addMarkAllButtons()”缩小为仅包含一组按钮?
- vb.net - 调用存储在访问表中的 vb.net 函数
- vb.net - 重新打开应用程序时保留最新的组合框选择
- php - 从不同文件夹中的不同页面获取输入名称
- php - 在 Laravel Eloquent 中加入两个模型
- laravel - 使用 laravel Sanctum 和 api 令牌身份验证获取用户时出现 401(未经授权)
- javascript - JSON jQuery 刷新
- java - Spring Cloud Config Server:错误:没有这样的标签:master
- video-streaming - 如何解决使用 SimpleWebRTC 直播视频的问题?
- ios - MacOS Catalina Simulators 屏幕保护程序捕获相同的屏幕