在AWS上的docker容器内服务Jupyter Notebook无法正常工作?

时间:2016-03-11 15:10:18

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

我已经建立了一个Ubuntu 14.04 AWS实例。我的安全组端口8888打开(tcp),端口22打开ssh。

我可以直接进入实例,然后在实例中我启动一个docker容器:

Roles

这个容器里面有jupyter笔记本,然后在我运行docker run -it --name="test" -p 8888:9999 b.gcr.io/tensorflow/tensorflow:latest-devel 的容器中,我看到了正确的输出:

jupyter notebook

如果我通过打开另一个ssh来运行[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). ,我会看到连接:

docker ps

所以一切看起来都是正确的,但我没有看到jupyter笔记本:http://PUBLICIP:8888

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

就我而言,解决方案是将 --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网络问题。