无法在Docker上运行jupyter/scipy-notebook

90次阅读
没有评论

问题描述

在尝试运行jupyter/scipy-notebook Docker镜像时遇到问题。他成功拉取了镜像,但在运行后,虽然终端显示可以在本地主机的8888端口访问,但实际在浏览器中访问时出现资源找不到的错误。

以下是终端输出:

sudo docker run jupyter/scipy-notebook
# 输出:
[I 06:16:54.964 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[W 06:16:55.137 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 06:16:55.195 NotebookApp] JupyterLab alpha preview extension loaded from /opt/conda/lib/python3.5/site-packages/jupyterlab
[I 06:16:55.211 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 06:16:55.211 NotebookApp] 0 active kernels
[I 06:16:55.211 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=8bc0bf76526f10c078aad705f48f80598fe17aade9897db8
[I 06:16:55.211 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:16:55.212 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token:
http://localhost:8888/?token=8bc0bf76526f10c078aad705f48f80598fe17aade9897db8

用户想知道可能是哪里出错了。

解决方案

请注意以下操作可能受版本差异影响,也可能存在风险,进行操作前请做好备份。

使用正确的端口映射

用户遇到的问题是由于端口映射不正确引起的。默认情况下,Docker容器内的端口并不直接映射到主机上,需要通过映射来让主机能够访问容器内的端口。在这种情况下,用户需要将容器内的8888端口映射到主机的8888端口上。

以下是正确的运行命令,包括正确的端口映射:

sudo docker run -p 8888:8888 jupyter/scipy-notebook

通过添加-p 8888:8888参数,将容器内的8888端口映射到主机的8888端口。这样,用户就可以通过浏览器访问http://localhost:8888来访问Jupyter Notebook了。

使用守护模式运行容器

如果用户想要在后台运行容器,可以使用守护模式(daemon mode)。在守护模式下,容器会在后台运行,并且可以通过docker logs命令来查看容器的输出日志。

以下是在守护模式下运行容器的示例命令:

sudo docker run -d -p 8888:8888 jupyter/scipy-notebook

请注意,使用守护模式时,用户需要使用docker logs命令来查看容器的日志,以获取Jupyter Notebook的访问链接和token信息:

docker logs <容器ID>

通过以上步骤,用户应该能够成功在浏览器中访问Jupyter Notebook了。

请确保你已经正确安装了Docker,并且已经拉取了jupyter/scipy-notebook镜像。如果问题仍然存在,可能涉及到其他方面的配置或问题,请进行进一步排查。

正文完