【问题标题】:problem running docker image using jupyter notebook使用 jupyter notebook 运行 docker 镜像的问题
【发布时间】:2019-09-17 12:51:30
【问题描述】:

我有一个 jupyter 笔记本和一个文件夹中的数据文件。我做了一个 Dockerfile 并写了以下几行

FROM jupyter/base-notebook

ARG export_file=FooD_Kind.csv

RUN pip install jupyter

RUN pip install numpy

RUN pip install matplotlib

RUN pip install pandas

RUN pip install pulp

COPY $export_file FooD_Kind.csv

COPY task_4kind.ipynb /

CMD ["jupyter notebook", "task_4kind.ipynb"]

我可以使用docker build -t nameofimage 成功构建图像但是当我使用docker run -it nameofimage 时。我收到一个错误[FATAL tini (7)] exec jupyter notebook failed: No such file or directory

如何在 docker 中运行这个 jupyter notebook?

编辑:

我在最后一行尝试了两个替换,
我用

替换了最后一行
# Start the jupyter notebook
ENTRYPOINT ["jupyter", "notebook", "--ip=*"]

它运行并在屏幕上给出一个令牌,但是当我将令牌粘贴到本地主机上时,它给出了无效凭据错误

然后我用

替换了最后一行
CMD jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root

它运行并在屏幕上给出一个令牌,但是当我将令牌粘贴到本地主机上时,它给出了无效凭据错误

【问题讨论】:

    标签: python docker jupyter-notebook


    【解决方案1】:

    如果您查看original Dockerfile,您会发现以下内容;

    ENTRYPOINT ["tini", "-g", "--"]
    CMD ["start-notebook.sh"]
    
    # Add local files as late as possible to avoid cache busting
    COPY start.sh /usr/local/bin/
    COPY start-notebook.sh /usr/local/bin/
    COPY start-singleuser.sh /usr/local/bin/
    

    start-notebook.sh 会给你一个有效的令牌。后续文件允许与图像进行交互,这些选项在docs 中进行了描述。

    请注意,还有更多注意事项,例如哪个用户正在运行 Dockerfile 中描述的命令:rootjovyan(Jupyter 用户)? root 执行的命令可能会以不允许 jovyan 的方式设置权限,例如加载给定的包。为了解决这个问题,在所有 Jupyter(基本笔记本和派生的)Dockerfile 中都有一个额外的行:

    RUN fix-permissions /etc/jupyter/
    

    Here 是派生笔记本的示例。

    本质上,要么删除您的自定义 ENTRYPOINT / CMD 并使用原始的,要么确保您例如获得正确的令牌。另外,修复权限。

    【讨论】:

    • 我收到以下错误,Step 13/17 : COPY start.sh /usr/local/bin/ COPY failed: stat /var/lib/docker/tmp/docker-builder157048403/start.sh: no such file or directory
    • 如果您使用jupyter/base-notebook,那么start.sh 已经存在。此外,请始终检查您要复制的文件是否存在。
    • ARG BASE_CONTAINER=jupyter/base-notebook FROM $BASE_CONTAINER ARG export_file=FooD_Kind.csv RUN pip install numpy RUN pip install matplotlib RUN pip install pandas RUN pip install pulp RUN fix-permissions /etc/jupyter/ COPY task_4kind.ipynb / COPY $export_file FooD_Kind.csv COPY task_4kind.ipynb / # Add local files as late as possible to avoid cache busting COPY start.sh /usr/local/bin/ COPY start-notebook.sh /usr/local/bin/ COPY start-singleuser.sh /usr/local/bin/ ENTRYPOINT ["tini", "-g", "--"] CMD ["start-notebook.sh"] 对吗?
    • 没有。您已经拥有尝试复制的 jupyter 文件。此外,无需修改 CMD 或 ENTRYPOINT。检查我链接的示例。
    • ARG BASE_CONTAINER=jupyter/base-notebook FROM $BASE_CONTAINER MAINTAINER khan saab "dskhanirfan@gmail.com" ARG export_file=FooD_Kind.csv RUN pip install numpy RUN pip install matplotlib RUN pip install pandas RUN pip install pulp RUN fix-permissions /etc/jupyter/ ENTRYPOINT ["tini", "-g", "--"] CMD ["start-notebook.sh"] 我可以成功构建映像,但令牌仍然在本地主机上给出无效凭据错误
    最近更新 更多