繁体   English   中英

从 AWS 上的 docker 容器内提供 Jupyter Notebook 不起作用?

[英]Serving Jupyter Notebook from within docker container on AWS not working?

我已经设置了一个 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

代替:

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

在我的情况下,解决方案是将--network="host"添加到--network="host" 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网络问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM