【发布时间】:2018-08-29 13:09:50
【问题描述】:
我创建了一个 Dockerfile,目的是在 Docker 中执行 Jupyter notebook。如下所示
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3 \
python3-pip
RUN pip3 install jupyter
WORKDIR /home/me/JupyterOneClick/
RUN pwd
RUN jupyter nbconvert --to python Hello.ipynb
RUN python Hello.py
#CMD ["python","Hello.py"]
但是,在构建此映像时出现错误(docker build -t jupyter:latest。)
步骤 6 将 jupyter notebook 转换为 python 文件,步骤 7 执行该 python 文件。
步骤 6/7:运行 jupyter nbconvert --to python Hello.ipynb ---> 运行在 8516a27588f6 [NbConvertApp] 警告 |模式“Hello.ipynb”不匹配任何文件 此应用程序用于将笔记本文件 (*.ipynb) 转换为其他各种 格式。
jupyter notebook 存储在 /home/me/JupyterOneClick 中。
此时,构建过程停止。
我还尝试将步骤 6 和 7 移动到 shell 脚本中,并从 Dockerfile 运行脚本,通过它我能够构建映像,但无法运行它,因为它找不到 shell 脚本。
命令 '/bin/sh -c chmod +x ./script.sh' 返回一个非零代码:1
谁能告诉我如何解决这个问题?我是初学者,但据我了解,RUN 创建了一个新的临时容器,因此无法找到该文件。
对于任何想知道的人,我没有使用 kubeflow 或 JupyterHub,因为它们允许新的开发环境,我必须部署现有的笔记本。
【问题讨论】:
-
在运行 jupyter 命令之前,您必须使用 ADD 将 Hello.ipynb 添加到
Dockerfile。顺便说一句,如果您有一个现有的笔记本,您可以使用卷并将其附加到容器以与 JupyterHub 一起使用。 -
感谢您的评论。我想我必须在运行 dockerfile 之前将文件复制到容器中。但是,您能否详细说明我如何使用卷将它们附加到容器?我在这里问了同样的问题,stackoverflow.com/questions/52054646/…,你能不能看看回答一下?
标签: python docker jupyter-notebook dockerfile jupyter