Docker宿主机访问Docker容器中的服务,通过localhost或127.0.0.1不行

wzwdev1980 2017-11-21 06:01:58
实验环境:
宿主机:192.168.0.1
容器:tomcat 做端口映射 8080->8080

在局域网192.168.0.2中可以通过http://192.168.0.1:8080 访问tomcat服务,而在 宿主机:192.168.0.1通过http://localhost:8080或http://127.0.0.1:8080却不能访问tomcat服务

怎么处理!
...全文
15169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
穿越23小时 2021-01-05
  • 打赏
  • 举报
回复
其实最近刚好有看虚拟机的网络,以前是实操发现的。现在也可以解释一下原理了。docker的默认网络模型是桥接模型,而且和虚拟机(VMware那种)的桥接模型不一样,它相当于是虚拟机的桥接模型+NAT模型构成的一个网络模型(对于这两种模型可以看看我的博客,最近有写,也可以直接百度:1.虚拟机网络模型;2.docker网络模型,你就知道为什么了)。 它也是用了虚拟机网络模拟那一套。大概原因是:docker内部模拟了一个网卡,类似虚拟机的桥接模式,所以,在宿主机内访问docker容器,实际上是相当于访问了一个局域网内的另一台机器,所以localhost是找不到了,要用docker的虚拟网关分配给容器的ip才可以访问。即:在宿主机中,相当于各个docker容器和宿主机是一个局域网内的多台机器。 可以参考: docker网络模型:https://blog.csdn.net/qq_43570369/article/details/91504306?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242 虚拟机的桥接模型和NAT模型:https://blog.csdn.net/qq_43570369/article/details/91504306?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242
穿越23小时 2021-01-05
  • 打赏
  • 举报
回复
引用 6 楼 jiayuanhuiyuan 的回复:
[quote=引用 5 楼 樱木翔 的回复:]这个问题有点奇怪,我都忘了当时怎么搞的了。记得是存在这个问题的,我确实也是用容器内的ip+端口实现访问的
同意你,你这种应该也是可以访问到的[/quote] 哈哈哈。隔了两个月,怎么想法变了
jiayuanhuiyuan 2020-12-30
  • 打赏
  • 举报
回复
引用 5 楼 樱木翔 的回复:
这个问题有点奇怪,我都忘了当时怎么搞的了。记得是存在这个问题的,我确实也是用容器内的ip+端口实现访问的
同意你,你这种应该也是可以访问到的
穿越23小时 2020-10-29
  • 打赏
  • 举报
回复
这个问题有点奇怪,我都忘了当时怎么搞的了。记得是存在这个问题的,我确实也是用容器内的ip+端口实现访问的
jiayuanhuiyuan 2020-10-29
  • 打赏
  • 举报
回复
引用 3 楼 樱木翔 的回复:
linux环境主机的localhost不是127.0.0.1了。所以访问不了,查看docker启动的容器的ip,一般是192.160.99.100+端口,就可以访问了。
我觉得你讲的原因和楼上不一致。他的似乎更正确哦大家怎么看?
穿越23小时 2019-07-18
  • 打赏
  • 举报
回复
linux环境主机的localhost不是127.0.0.1了。所以访问不了,查看docker启动的容器的ip,一般是192.160.99.100+端口,就可以访问了。
tianfang 2017-12-20
  • 打赏
  • 举报
回复
docker直接跑在宿主机上啊 为什么要端口映射
tianfang 2017-12-20
  • 打赏
  • 举报
回复
容器:tomcat 做端口映射 8080->8080 端口映射服务 监听的是192.168.0.1的8080,而不是127.0.0.1的8080,所以访问不到docker主机上
序号内容详情内容第1讲关于《Docker》这门课主要阐述为什么录制这个系列的视频第2讲Docker基础知识介绍为什么会有DockerDocker能做些什么第3讲Docker架构及运行原理介绍Docker架构图及运行工作原理第4讲什么是Docker镜像Docker镜像结构、运行一个简单的镜像第5讲Docker镜像常用命令获取镜像、查看镜像信息、查找镜像、删除和清理镜像第6讲commit命令创建镜像使用commit命令创建镜像第7讲Docker容器(一)启动容器、重启容器、创建且运行容器第8讲Docker容器(二)进入容器、删除容器、查看容器进程、查看统计信息第9讲容器端口映射通过端口映射实现容器访问第10讲容器互联容器容器之间进行互联第11讲数据卷通过数据卷达到持久性的效果第12讲第一个Dockerfile创建一个简单的Dockerfile第13讲Dockerfile构建过程Dockerfile构建过程第14讲Dockerfile实现数据卷通过Dockerfile文件来实现数据卷第15讲Dockerfile指令之RUN介绍保留字指令RUN的使用第16讲Dockerfile指令之CMD介绍保留字指令CMD的使用第17讲Dockerfile指令之ENTRYPOINT介绍保留字指令ENTRYPOINT的使用第18讲Dockerfile指令之COPY介绍保留字指令COPY的使用第19讲Dockerfile指令之ADD介绍保留字指令ADD的使用第20讲Dockerfile指令之WORKDIR、ENV、EXPOSE介绍保留字指令WORKDIR、ENV、EXPOSE的使用第21讲Docker部署RedisDocker容器下部署Redis第22讲Docker部署MysqlDocker容器下部署Mysql第23讲Docker部署NginxDocker容器下部署Nginx

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧