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

在运行AWS VPC中的docker时遇到问题。

这是我的设置:我有两台机器在VPC中运行:

  • 10.0.100.150
  • 10.0.100.151

它们都具有分配给它们的弹性IP,它们都运行在同一个启用了互联网的子网中。

比方说,我正在运行一个Web服务器,该服务器在10.0.100.150计算机的容器中为静态文件提供容器:

  • IP:172.17.0.2
  • 端口8111在机器上的8111端口上转发。

我试图从我的本地机器上访问静态文件(或者另一个非VPC机器也尝试了一个没有在VPC中运行的EC2实例)并且工作起来非常完美。

如果我尝试从另一台机器(10.0.100.151)访问文件,则会挂起。 我正在使用wget来拉取文件。

试图用tcpdump和ngrep进行debugging,而且我看到的是请求到达容器。 如果我在主机上,我看到请求进入但没有回应。 如果我在容器上看到请求,并且回应回来。

我已经尝试了多个iptables设置(启用postrouting,手动转发端口等),但没有成功。

以任何方式帮助 – 甚至debugging方向将不胜感激。

谢谢!

通过编织来build立一个集装箱networking要容易得多。 有关更多AWS特定的说明,请查看项目的博客 。

这听起来像EC2实例不能彼此通信,因为它们不在允许端口8111彼此访问的安全组中。 检查以确保安全组允许访问自己(并将两个EC2实例添加到安全组),或者允许VPC子网端口8111。