当前位置: 首页 > 知识库问答 >
问题:

无法使用netowrk_mode访问docker容器中的jupyterhub: host

戚浩淼
2023-03-14

我有一个jupyterhub运行在一个容器与network_mode:主机由于一些要求。但是,在我的docker-comment文件中将network_mode设置为主机后,我无法使用主机ip: 8000从外部主机访问jupyterhub。

我的理解是

如果对容器使用主机网络模式,则该容器的网络堆栈不会与Docker主机隔离(容器共享主机的网络名称空间),并且容器不会获得分配的自己的IP地址。例如,如果您运行一个绑定到端口80的容器并使用主机网络,则该容器的应用程序在主机IP地址的端口80上可用。

我有什么遗漏吗?

编辑:为了简化,我按照这里的说明操作

docker run --rm -d --network host --name my_nginx nginx

我可以访问nginx欢迎页面

$ curl localhost:80

但如果我试图从另一个宿主身上卷曲

$ curl 10.230.0.123:80
curl: (7) Failed connect to 10.230.0.123:80; No route to host

共有1个答案

柳豪
2023-03-14

当系统上的防火墙处于活动状态并阻止端口访问时,可能会发生此问题。您可以使用以下命令启用端口访问:

# in centos7, by updating iptables rules
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

# in ubuntu
sudo ufw allow 80/tcp
 类似资料:
  • 我可以对Docker API进行cUrl调用,但是如果我从容器(docker-comals)运行相同的脚本,我就无法到达任何API终结点。 我的请求如下: 原因可能是使用了localhost,但我现在还找不到解决方案。有什么建议吗? 编辑:下面是我正在使用的堆栈(Api平台)的简要摘要https://api-platform.com/).每个容器都连接到“api_默认”网桥网络: 基于php=Sy

  • 问题内容: 我使用docker-compose和以下配置部署了标准的Jenkins Docker映像: 在阅读了许多SO问题之后,我测试了将Root添加到docker用户组,并验证Container中的用户是Root with 。 当我尝试使用“ Docker URL = unix:///var/run/docker.sock”在Jenkins UI中添加Docker访问时,出现错误消息“ **o

  • 我有两个Docker容器在同一个网络中运行,我希望其中一个通过spring Webclient调用另一个。我确信他们都在同一个网络中- “finishConnect(…)失败:连接被拒绝:附件加载程序秒/172.21.0.5:80;嵌套异常为io。内蒂。频道AbstractChannel$AnnotatedConnect异常:finishConnect(…)失败:连接被拒绝:附件加载程序秒/172

  • 我有一个Django应用程序的简单代码构建项目,我想在docker容器中启动一个Postgres数据库进行测试。 命令是: 在我的本地机器上,一切都工作得很好,但在AWS CodeBuild中,我收到了错误: psql:错误:无法连接到服务器:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字"/var/run/postgresql/. s. PGSQL.5432"上

  • 我使用Docker compose和以下配置部署了标准Jenkins Docker映像: 在阅读了许多SO问题后,我测试了将Root添加到使用的docker用户组中,并验证了容器中的用户是使用的Root。 当我尝试在Jenkins UI中使用Docker URL=unix:///var/run/docker.sock添加Docker访问时,我会收到错误消息org.newsclub.net.unix

  • 我有一个关于这个问题的问题https://hub.docker.com/r/jupyter/scipy-notebook.我正在尝试使用docker compose运行此图像: 组成: Dockerfile 我用手够不着它http://locahost:8888 .... 网址。我使用Windows10作为主机,并尝试从这个docker compose和这些工作中访问其他服务。