No se puede acceder al contenedor Docker desde otro contenedor Docker a través de la IP del host

No se puede acceder al contenedor Docker desde otro contenedor Docker a través de la IP del host

Tengo un servidor que ejecuta una VPN Wireguard 10.0.1.254/24y Docker se está ejecutando 172.17.0.1/16.

Mi docker-compose.yamlaspecto es este (simplificado):

services:
  container_a:
    image: nginx:latest
    ports:
      - '10.0.1.254:80:80'

  container_b:
    image: alpine:latest

Ahora puedo acceder a nginx usando wget http://10.0.1.254el host. También puedo acceder a él de la misma manera desde un par VPN (por ejemplo 10.0.1.1). Pero cuando intento hacer esto desde otro contenedor Docker (por ejemplo docker compose exec container_b wget http://10.0.1.254), se agota el tiempo de espera. Sin embargo, puedo hacer ping al host ( docker compose exec container_b ping 10.0.1.254).

Supongo que esto tiene algo que ver con la forma en que Docker asigna los puertos en el host. Pero no puedo encontrar mucha información sobre esto. ¿Alguien sabe por qué esto no funciona?

Respuesta1

Resulta que todavía tenía instalado UFW, que estaba configurado para permitir la conexión entrante a este puerto en la wg0interfaz. Pero el sistema fue lo suficientemente inteligente como para tomar un atajo, directamente de una interfaz virtual de Docker a la otra, evitando esta regla ACEPTAR para la wg0interfaz.

Descubrí esto usando tail +1f /var/log/ufw.logy luego ejecutando el wgetcomando fallido desde el otro contenedor Docker.

En mi caso, la solución fue simplemente desactivar UFW ( sudo ufw disable), ya que de todos modos no lo estoy usando.

información relacionada