=>>漫反射=>> 2024-05-15 22:28 采纳率: 50%
浏览 51
已结题

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日