Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

589
Vistas
¿No puede acceder al puerto del contenedor Docker expuesto públicamente desde una máquina externa, solo desde localhost?

Tengo un contenedor Docker ejecutándose en mi máquina Ubuntu Linux 14.04 que expone un puerto públicamente:

 docker run --name spacyapi -d -p 127.0.0.1:7091:7091 jgontrum/spacyapi:en

Puedo conectarme y ejecutar comandos contra el servidor en el contenedor sin problema desde la máquina local. Por ejemplo:

 curl http://localhost:7091/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST

El comando se ejecuta fielmente. Sin embargo, si pruebo el mismo comando CURL desde una máquina externa, obtengo un error de "conexión rechazada":

 curl http://192.5.169.50:5000/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST curl: (7) Failed to connect to 192.5.169.50 port 7091: Connection refused

Donde 192.5.169.50 es la dirección IP del cuadro que ejecuta el contenedor Docker.

No creo que necesite ninguna regla de iptables porque no necesito configurar ninguna para el servidor Node.JS que se ejecuta en la misma caja. Todas las demás computadoras en mi red local pueden acceder al servidor Node.JS sin problemas. Pero no el contenedor Docker que actúa como servidor.

¿Cómo puedo arreglar esto?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No publicaste públicamente tu puerto con esta bandera:

 -p 127.0.0.1:7091:7091

Ese indicador dice publicar en la interfaz del host 127.0.0.1 (localhost), puerto 7091 al puerto de contenedores 7091. La única forma de llegar a ese puerto es estar en el host y conectarse a la interfaz de bucle invertido.

Para publicar públicamente el puerto, elimine la IP de esa bandera:

 -p 7091:7091

o publicar explícitamente en todas las interfaces con:

 -p 0.0.0.0:7091:7091

El último formato es idéntico al primero, siempre y cuando no haya anulado la configuración del demonio docker con dockerd --ip xxxx o establecido el valor de ip en su archivo /etc/docker/daemon.json.

over 4 years ago · Santiago Trujillo Denunciar

0

No creo que la IP del contenedor sea 192.5.169.50. Intente hacer docker inspect <container-uid> | grep IPAddress para verificar cuál es la IP del contenedor. Creo que debería ser algo así como 172.17.0.X.

También podría hacer docker run -d --network=host <image> que apila el contenedor encima de la red host.

Los contenedores son simplemente algo encima del host, el host es el que realmente se comunica con el exterior.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda