Python 使用jupyter笔记本运行docker映像时出现问题

Python 使用jupyter笔记本运行docker映像时出现问题,python,docker,jupyter-notebook,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 F

我有一个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笔记本失败:没有这样的文件或目录

如何在docker中运行这个jupyter笔记本

编辑:

我在最后一行尝试了两次替换,
我将最后一行替换为

# Start the jupyter notebook
ENTRYPOINT ["jupyter", "notebook", "--ip=*"]
CMD jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root
它运行并在屏幕上给出一个令牌,但当我将令牌粘贴到localhost上时,它给出了无效凭据错误

然后我将最后一行替换为

# Start the jupyter notebook
ENTRYPOINT ["jupyter", "notebook", "--ip=*"]
CMD jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root
它运行并在屏幕上提供一个令牌,但当我将令牌粘贴到localhost上时,它会提供无效凭据错误

如果您检查,您将发现以下内容:

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/
启动笔记本。sh
将为您获取有效令牌。后续文件允许与图像交互,这些选项在中介绍

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

RUN fix-permissions /etc/jupyter/
这是一个衍生笔记本的示例


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

我得到以下错误,
步骤13/17:COPY start.sh/usr/local/bin/COPY失败:stat/var/lib/docker/tmp/docker-builder 157048403/start.sh:没有这样的文件或目录
如果你使用
jupyter/base笔记本
,那么
start.sh
已经存在了。此外始终首先检查要复制的文件是否存在。
ARG BASE_CONTAINER=jupyter/BASE notebook FROM$BASE_CONTAINER ARG export_file=FooD_Kind.csv运行pip install numpy运行pip install matplotlib运行pip install pandas运行pip安装纸浆运行修复权限/etc/jupyter/copy task\u 4kind.ipynb/copy$export_fileFooD_Kind.csv COPY task_4kind.ipynb/#尽可能晚地添加本地文件以避免破坏缓存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来自$BASE_CONTAINER维护者khan saab“dskhanirfan@gmail.com“ARG export_file=FooD_Kind.csv运行pip安装numpy运行pip安装matplotlib运行pip安装熊猫运行pip安装纸浆运行修复权限/etc/jupyter/ENTRYPOINT[“tini”、“-g”、“--”]CMD[“start notebook.sh”]
我可以成功构建映像,但令牌仍在本地主机上提供无效凭据错误