我已经设置了一个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笔记本,然后在容器中运行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

因此,一切似乎都是正确的,但我在http://PUBLICIP:8888上看不到jupyter笔记本

最佳答案

代替:

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

10-08 18:50