我在 AWS VPC 中运行 docker 时遇到问题。
这是我的设置:我有两台机器在 VPC 中运行:
- 10.0.100.150
- 10.0.100.151
两者都分配有弹性 IP,并且都在同一个支持互联网的子网中运行。
假设我在 10.0.100.150 机器上的容器中运行一个 Web 服务器,该容器提供静态文件:
- IP:172.17.0.2
- 8111端口转发到机器上的8111端口。
我正在尝试从我的本地机器访问静态文件(或者另一台非 VPC 机器也尝试了未在 VPC 中运行的 EC2 实例)并且它运行顺畅。
如果我尝试从另一台机器 (10.0.100.151) 访问文件,它会挂起。我正在使用 wget 来提取文件。
尝试使用 tcpdump 和 ngrep 对其进行调试,我看到请求到达容器。如果我在主机上运行 ngrep,我会看到请求进入但没有响应返回。如果我在容器上运行 ngrep,我会看到请求进入并且响应返回。
我尝试了多种 iptables 设置(启用后路由、手动转发端口等),但没有成功。
以任何方式提供帮助 — — 即使是调试指导也将不胜感激。
谢谢!
答案1
答案2
这听起来像是 EC2 实例无法相互通信,因为它们不在允许端口 8111 相互访问的安全组中。检查以确保安全组允许访问其自身(并将两个 EC2 实例都添加到安全组)或允许 VPC 子网访问端口 8111。