networking - Docker - 通过其公共(public) ip 访问同一台机器上的另一个容器,无需 docker 链接

标签 networking docker

在具有静态、可公开路由的 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/

相关文章:

docker - 如何列出停止的 Docker 容器中的文件

docker - 通过 bash 连接到容器时避免 docker exec 僵尸进程

java - 如何快速将maven项目集成到docker中

iphone - 如何在 iOS 上使用 NSStreamNetworkServiceTypeBackground?

ssl - 使用 Wireshark 解密来自应用程序的 SSL/TLS 流量

mysql - Windows 并行虚拟机上的 MS Access 连接到 Linux 并行虚拟机上的 MySQL 服务器

linux - TCP数据丢失事件

docker - 如何知道.NET SDK最新标签使用哪个Docker镜像?

linux - SSH 跨网络中的所有机器,怎么样?

docker - Kubernetes - 通过 ssh 连接到远程数据库服务器