使用 jupyter notebook 运行 docker image 的问题

Kha*_*ned 5 python docker jupyter-notebook

我有一个 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"]
Run Code Online (Sandbox Code Playgroud)

我可以使用docker build -t nameofimageBut成功构建图像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=*"]
Run Code Online (Sandbox Code Playgroud)

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

然后我用

CMD jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*ski 5

如果你检查原始的 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/
Run Code Online (Sandbox Code Playgroud)

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

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

RUN fix-permissions /etc/jupyter/
Run Code Online (Sandbox Code Playgroud)

以下是派生笔记本的示例。

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