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


10

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

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

  • 10.0.100.150
  • 10.0.100.151

它们都分配有弹性IP,并且都在启用Internet的同一子网中运行。

假设我正在运行一个Web服务器,该服务器在10.0.100.150机器上的容器中提供静态文件:

  • 知识产权:172.17.0.2
  • 端口8111在计算机上的8111端口上转发。

我正在尝试从本地计算机访问静态文件(或者另一台非VPC计算机也尝试了未在VPC中运行的EC2实例),并且它可以完美地工作。

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

试图用tcpdump和ngrep调试它,我已经看到请求是到达容器的。如果我在主机上ngrep,则看到请求进入,但没有响应返回。如果我在容器上ngrep,我会看到请求进入并返回响应。

我尝试了多个iptables设置(启用了路由后功能,以及手动转发端口等),但没有成功。

以任何方式提供帮助-甚至调试指导也将不胜感激。

谢谢!



仔细阅读了将Docker容器暴露于VPC网络的文章,但那是完全不同的。
Bogdan加沙

是吗?您是否已在10.0.100.150上禁用了源/目标IP检查?
Michael-sqlbot

是的,我禁用了它,并且还在另一个非默认VPC上进行了测试,同样的错误。
Bogdan加沙

您可以列出EC2实例的安全组吗?这听起来像实例不在默认安全组中,以允许该安全组中其他实例之间的通信。
安迪·辛

Answers:



0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.