我有一个运行在docker容器中的grpc-go服务器,监听0.0.0.0:8080。在对接容器中的localhost或127.0.0.1侦听失败后,我发现它工作正常-而且只有在对接容器中运行失败,而不是在同一台机器上运行时才会失败。
此外,一个简单的web服务器也可以在本地主机或127.0.0.1上进行侦听。
我发现0.0.0.0正在监听任何网络适配器--但没有找到其他解释。
好吧,问题解决了--但我正在寻找一个解释--你知道吗?
发布于 2019-05-18 19:41:49
Networking是docker中的名称空间之一,类似于pid和文件系统名称空间。如果您在容器内终止pid 1,那么将终止容器内的进程,而不是主机上的systemd/init (只要您不覆盖名称空间)。如果您在容器内执行rm -rf /bin操作,则会从该容器中删除文件,而不是从主机中删除文件(只要您没有安装卷)。类似地,名称空间中的环回网络(localhost或127.0 0.1)仅指该名称空间,而不是主机。
从更高的层次考虑,主机上的环回只能从该主机访问,您不能从其他主机或外部负载均衡器访问它。Namespaced网络的工作原理非常相似。容器内的回送可由同一网络名称空间内的其他进程到达,但不能由其他名称空间中的容器到达,并且不能从具有端口转发的主机到达,因为端口转发到虚拟网络接口,类似于外部负载均衡器转发到主机网络接口的方式。
发布于 2021-02-20 18:47:25
这可能是由于浏览器缓存的原因!
在我的例子中,我在配置.htaccess文件时遇到了一些错误,这个文件进行了301次重定向。因为我同时使用localhost和127.0.0.1进行了测试,所以它们不再工作。当我用curl测试它们时,我发现它只是一个浏览器缓存。
https://stackoverflow.com/questions/56197982
复制相似问题