Tengo problemas al ejecutar Docker en AWS VPC.
Aquí está mi configuración: tengo dos máquinas ejecutándose en VPC:
- 10.0.100.150
- 10.0.100.151
ambos tienen una IP elástica asignada, ambos se ejecutan en la misma subred habilitada para Internet.
Digamos que estoy ejecutando un servidor web que sirve archivos estáticos en un contenedor en la máquina 10.0.100.150 del contenedor:
- IP: 172.17.0.2
- el puerto 8111 se reenvía en el puerto 8111 de la máquina.
Estoy tratando de acceder a los archivos estáticos desde mi máquina local (u otra máquina que no es VPC también probó una instancia EC2 que no se ejecuta en la VPC) y funciona sin problemas.
Si intento acceder a los archivos desde la otra máquina (10.0.100.151) se cuelga. Estoy usando wget para extraer los archivos.
Intenté depurarlo con tcpdump y ngrep y lo que he visto es que la solicitud llega al contenedor. Si ngrep en la máquina host veo las solicitudes entrando pero no hay respuesta regresando. Si me encuentro en el contenedor, veo que las solicitudes entran y la respuesta regresa.
Probé varias configuraciones de iptables (con postrouting habilitado, con puertos de reenvío manuales, etc.) pero no tuve éxito.
Ayuda de cualquier manera, incluso las instrucciones de depuración serían muy apreciadas.
¡Gracias!
fuente
Respuestas:
Configurar una red de contenedores es mucho más fácil con weave . Para obtener más instrucciones específicas de AWS, eche un vistazo al blog del proyecto .
fuente
Esto parece que las instancias de EC2 no pueden comunicarse entre sí porque no están en un grupo de seguridad que permita el acceso del puerto 8111 entre sí. Verifique para asegurarse de que el grupo de seguridad permita el acceso a sí mismo (y agregue ambas instancias EC2 al grupo de seguridad) o que permita que la subred VPC acceda al puerto 8111.
fuente