在具有静态、可公开路由的 IP 的 VPS 上,我有一个简单的 Web 服务器(在端口 8080 上)在导出端口 8080(-p 0.0.0.0:8080:8080
)的容器中运行。
如果我在同一个盒子上启动另一个容器并尝试 curl <public ip of host>:8080
它解析地址,尝试连接但在发出请求时失败(它只是挂起)。
从主机的外壳(容器外),curl <public ip of host>:8080
成功。
为什么会这样?我的感觉是,不知何故,虚拟网卡无法相互通信。是否有解决方法(除了使用 docker 链接)?
最佳答案
根据 Docker 的高级网络文档 (http://docs.docker.io/use/networking/):“Docker 在后台使用 iptables 来接受或丢弃容器之间的通信。”
因此,我相信您需要使用 iptables 设置入站和出站路由。这篇文章给出了如何做到这一点的可靠描述:http://blog.codeaholics.org/2013/giving-dockerlxc-containers-a-routable-ip-address/
关于networking - Docker - 通过其公共(public) ip 访问同一台机器上的另一个容器,无需 docker 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23724704/