全面披露:我是 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
(Windows上为%APPDATA%\jupyter\kernels\docker_test
)。
将以下内核规范放入您创建的目录中的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镜像启动一个容器。
ENV JUPYTER_RUNTIME_DIR=/tmp/runtime
并调整-f
标志的位置,可能会得到不同的错误信息Timeout waiting for kernel_info reply
。但是,如果我还要调整{connection_file}:/tmp/runtime/connection_spec
,那么我又会遇到权限错误。无论我是否以管理员身份运行 jupyter,都会出现这种情况。 - Roelantsingularity
实现类似功能的想法或指针?HPC 管理员不喜欢在集群上运行 docker,因为它需要提升权限。如果有帮助的话,singularity 可以本地运行 docker 镜像。 - axolotl