【问题标题】:Why 0.0.0.0 is working and localhost or 127.0.01 is not为什么 0.0.0.0 有效而 localhost 或 127.0.01 无效
【发布时间】:2019-10-05 11:15:16
【问题描述】:

我有一个 grpc-go 服务器在 docker 容器中运行,监听 0.0.0.0:8080。在 docker 容器中侦听 localhost127.0.0.1 失败后,我发现这可以正常工作 - 而且它仅在 docker 容器中运行失败,而不是在同一台机器上运行。

还有一个简单的网络服务器在 localhost 或 127.0.0.1 上侦听。

我发现0.0.0.0 正在侦听任何网络适配器 - 但没有找到其他解释。

好吧,问题解决了——但我正在寻找解释——你知道吗?

【问题讨论】:

    标签: docker grpc


    【解决方案1】:

    Networking 是 docker 中的命名空间之一,类似于 pid 和文件系统命名空间。如果您在容器内终止 pid 1,则会终止容器内的进程,而不是主机上的 systemd/init(只要您不覆盖命名空间)。如果您在容器内rm -rf /bin,则会从该容器中删除文件,而不是从主机中删除文件(只要您没有卷安装)。同样,命名空间中的环回网络(localhost 或 127.0 0.1)仅指该命名空间,而不是主机。

    从更高的层面考虑,主机上的环回只能从该主机访问,您无法从其他主机或外部负载均衡器访问它。命名空间网络的工作方式非常相似。容器内的环回可以由同一网络命名空间内的其他进程访问,但不能由其他命名空间中的容器访问,也不能从具有端口转发的主机访问,因为它转发到虚拟网络接口,类似于外部负载均衡器转发到主机网络接口。

    【讨论】:

      【解决方案2】:

      这可能是由于浏览器缓存的原因!

      就我而言,我在配置 .htaccess 文件时遇到了一些错误,该文件会导致 301 重定向。因为我用localhost127.0.0.1 进行了测试,所以它们不再起作用。 当我用curl测试它们时,我发现它只是一个浏览器缓存。

      【讨论】:

        猜你喜欢
        • 2017-08-05
        • 2014-06-11
        • 2018-01-27
        • 2020-03-09
        • 2011-07-05
        • 2012-01-15
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多