Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

585
Views
¿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?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

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.

about 4 years ago · Santiago Trujillo Report

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.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!