docker - 如何正确共享一个 jupyter docker 来托管
问题描述
我正在尝试访问在我的主机上的 docker (windows) 上运行的 jupyter。运行常规命令时:
docker run -it -p 8888:8888 -v ~:/home/jovyan/workspace jupyter/tensorflow-notebook
我收到了可以访问笔记本的地址:
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://(be1b837f3804 or 127.0.0.1):8888/?token=0b2a6eaec3aae87xc2c04....
使用 127.0.0.1 但不能使用其他地址时,我可以在我的主机(Windows)上访问它。我的目标最终是从另一台本地计算机访问此地址。我究竟做错了什么?
解决方案
be1b837f3804
是容器的主机名,容器外的客户端无法访问它。
事实上,当您使用127.0.0.1:8888
访问您的服务时,您仍然不是直接访问容器。它会先访问主机的网络命名空间(127.0.0.1),然后因为你做了端口绑定(-p 8888:8888),所以到主机8888的所有流量都会路由到容器的8888端口。
所以,正如我在评论中所说,如果你想从其他客户端访问容器的服务,你必须指定主机的 ip,例如 docker 主机的 ip is 192.168.1.101
,然后在其他电脑上,打开 next 访问:
http://192.168.1.101:8888/?token=0b2a6eaec3aae87xc2c04....
您可能还想看看官方指南
推荐阅读
- c - 有没有办法将两个变量映射到 ARM 中的同一缓存集?
- node.js - 从 Github 启动一个克隆的 create-react-app
- javascript - 每次我在我的网站上登录时,Google 都会出现“检查您的密码”错误
- html - 在 safari 中渲染图像并在 chrome 中渲染不同的图像(不同的来源)
- python - 非数字矩阵中的特征值和特征向量
- python - Python:返回一个列表
- java - 发现 javax.mail.AuthenticationFailedException:连接失败,没有指定密码?在收听密码正确的新邮件时
- r - 将 print 语句的输出保存在 R 的 data.frame 中
- mysql - minikube 中的 MYSQL 8 部署失败 .. 容器未运行 .. mysqld 在尝试检查配置时失败
- javascript - 如何根据 php 中组合框中的选定值在数据库中的文本框中显示该值?