【问题标题】:Serving Jupyter Notebook from within docker container on AWS not working?从 AWS 上的 docker 容器中服务 Jupyter Notebook 不起作用?
【发布时间】:2016-06-26 21:34:55
【问题描述】:

我已经设置了一个 Ubuntu 14.04 AWS 实例。我的安全组开放了 8888 端口 (tcp),并为 ssh 开放了 22 端口。

我可以 ssh 进入实例就好了,然后在实例中我启动一个 docker 容器:

docker run -it --name="test" -p 8888:9999 b.gcr.io/tensorflow/tensorflow:latest-devel

这个容器里面有jupyter notebook,然后在容器中我运行jupyter notebook,我看到了正确的输出:

[I 14:49:43.788 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/
[I 14:49:43.788 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

如果我通过打开另一个 ssh 运行 docker ps,我会看到连接:

CONTAINER ID        IMAGE                                         COMMAND             CREATED             STATUS              PORTS                                        NAMES
8414f19fcd5f        b.gcr.io/tensorflow/tensorflow:latest-devel   "/bin/bash"         38 minutes ago      Up 23 minutes       6006/tcp, 8888/tcp, 0.0.0.0:8888->9999/tcp   test

所以一切似乎都是正确的,但我没有看到 jupyter notebook:http://PUBLICIP:8888

【问题讨论】:

    标签: amazon-web-services docker jupyter jupyter-notebook


    【解决方案1】:

    代替:

    docker run -it --name="test" -p 8888:9999 b.gcr.io/tensorflow/tensorflow:latest-devel
    

    诀窍是使用:

    docker run -it --name="test" -p 8888:8888 b.gcr.io/tensorflow/tensorflow:latest-devel
    

    编辑,感谢DDW的解释:

    “-p 8888:9999 不代表范围,它意味着你的 docker 容器的端口 9999 映射到端口 8888。8888 可能是你的标准笔记本端口,所以 8888:8888 工作是合乎逻辑的。”

    如果你想打开两个端口,那么命令是:

    docker run -it --name="test" -p 8888:8888 -p 9999:9999 b.gcr.io/tensorflow/tensorflow:latest-devel
    

    【讨论】:

    • 整个范围是什么意思? -p 8888:9999 不代表范围,这意味着您的 docker 容器的端口 9999 映射到端口 8888。8888 可能是您的标准笔记本端口,因此 8888:8888 工作是合乎逻辑的。如果您的安全组打开了端口 6666,您可以使用 6666:8888,然后 Public_ip:6666 将显示您的笔记本界面。
    • @DDW 发现,出于某种原因,我认为 x:y 是范围,因为这是 python 中范围的语法
    • 也许以某种方式将我的答案复制粘贴到您的答案中,以便我们接受。很多人对端口映射的事情感到困惑!
    【解决方案2】:

    在我的情况下,解决方案是将--network="host" 添加到 docker run 命令 但是,请注意它还有其他一些效果。

    您可以结帐

    https://docs.docker.com/network/host/#:~:text=If%20you%20use%20the%20host,its%20own%20IP%2Daddress%20allocated

    https://docs.docker.com/network/bridge/#enable-forwarding-from-docker-containers-to-the-outside-world

    因为我认为是docker网络问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 2018-11-12
      • 2016-12-14
      • 2019-07-01
      相关资源
      最近更新 更多