在 VPC 中运行 docker 并从另一台 VPC 机器访问容器

在 VPC 中运行 docker 并从另一台 VPC 机器访问容器

我在 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

使用以下方式设置容器网络会更加容易:编织。有关 AWS 特定的更多说明,请查看项目博客

答案2

这听起来像是 EC2 实例无法相互通信,因为它们不在允许端口 8111 相互访问的安全组中。检查以确保安全组允许访问其自身(并将两个 EC2 实例都添加到安全组)或允许 VPC 子网访问端口 8111。

相关内容