【问题标题】:Docker Jupyter image not exposing portDocker Jupyter 图像不暴露端口
【发布时间】:2018-01-22 13:54:55
【问题描述】:

我使用 alpine linux 创建了 Jupyter docker 映像。一切正常,但容器没有暴露端口。但是在容器内部,端口正在工作。但我无法从我的主机访问。

我已经编写了如下所示的图像文件:

FROM vanarajaz/alpine-python

MAINTAINER Vanaraj C "vanaraj@assistanz.com

"RUN python3 -m pip install --upgrade pip && \

python3 -m pip install jupyter

EXPOSE 8888

CMD [ "jupyter", "notebook" ]

创建容器后,出现以下错误:

[I 13:32:34.019 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret[C 13:32:34.592 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.From:Vanaraj
[I 13:32:34.019 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret[C 13:32:34.592 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.

我不知道如何解决这个错误。任何帮助是极大的赞赏。提前致谢。

【问题讨论】:

  • 使用docker run -d -p 8888:8888 imagename运行,解决错误需要更改启动服务的Dockerfile中的用户:docs.docker.com/engine/reference/builder/#user。默认这是根用户,但这不安全,请授予您的文件所有者/权限并使用其他用户运行。
  • 感谢 lvthillo... 现在工作正常

标签: docker jupyter-notebook jupyter docker-image


【解决方案1】:

EXPOSE 是构建镜像的人和运行容器的人之间的文档。见docker's documentation for more details。它不会影响发布端口的能力,也不会自动为您发布端口。

如果要从主机访问端口,请使用 docker run -p 或 compose yml 文件的 ports 部分来发布端口。

或者,如果您想在容器之间进行通信,则无需发布端口。你只需要两个容器都在同一个 docker 网络上。

【讨论】: