qq_42815818 2024-05-15 22:28 采纳率: 50%
浏览 26
已结题

docker的host模式为什么会导致应用无法访问

我在虚拟机上部署了docker,使用docker部署一台redis,如果我部署redis的时候使用的是端口映射,也就是桥接网络模式,那么在我的电脑上就可以访问到这台虚拟机中的redis。而如果我部署redis的时候使用的是host网络默认,在我的电脑上就无法访问到这台redis。我检查了网络设置,防火墙是开启的,并且没有放开6379端口,我想知道为什么两种情况一种可以访问,而另一种不能访问?

具体的命令:
docker run --name r10 -d --network=host redis
此时无法访问

而如果运行容器命令:
docker run -d --name r10 -p 6379:6379 redis
就可以访问
无论是
redis-cli.exe -h 192.168.151.128 -p 6379
还是在java客户端都是可以的。也就是说宿主机的6379端口明明被防火墙挡住了,为什么在bridge的时候可以访问?
AI和搜索都用了,别粘贴答案了

  • 写回答

3条回答 默认 最新

  • 回眸一笑吟离歌 2024-05-24 14:26
    关注

    因为host方式和桥接不同。
    NAT 规则:在桥接模式下,Docker 管理 NAT 规则,使得外部可以访问容器端口,即使宿主机的防火墙关闭了这些端口。
    防火墙规则:在 Host 网络模式下,由于容器直接绑定宿主机端口,宿主机的防火墙规则将直接影响流量。如果防火墙没有放开 6379 端口,外部访问将被阻止。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 修改了问题 5月15日
  • 创建了问题 5月15日

悬赏问题

  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题