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

453
Vistas
docker-proxy obteniendo accept4: descriptor de archivo incorrecto

Estoy tratando de agregar un reenvío de puerto al contenedor docker usando docker-proxy pero tengo este error a continuación,

Aquí están los detalles,

  • Ya se está ejecutando un contenedor con IP 172.17.0.2 con --net=none. Proporcionamos nuestra propia red y no usamos la red docker0.

  • Ahora queremos exponer algunos puertos del contenedor al host, así que pensé en probar docker-proxy.

  • ejecutamos el siguiente comando,

     $ docker-proxy -container-ip 172.17.0.2 -container-port 8000 -host-ip 0.0.0.0 -host-port 8000 -proto tcp and we are getting, 2017/03/16 10:02:30 Stopping proxy on tcp/[::]:8001 for tcp/172.17.0.2:8001 (accept tcp [::]:8001: accept4: bad file descriptor)

Versión de Docker: Docker versión 17.03.0-ce, compilación 60ccb22

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

0

No creo que haya otra forma de hacer esto, excepto detener el contenedor, eliminarlo y luego ejecutarlo nuevamente a partir de un Dockerfile o simplemente con la ejecución de la ventana acoplable agregando -p 8000: 8000. Docker no parece permitirle jugar con docker-proxy directamente, debe usar los comandos estándar.

También puede exponer manualmente el puerto al acceso externo cambiando directamente las iptables, es decir, la cadena DOCKER en la tabla NAT y la cadena DOCKER en el filtro. Por ejemplo:

 iptables -t nat -A DOCKER ! -i your_bridge0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 172.17.0.2:8000

Y:

 iptables -A DOCKER ! -i your_bridge0 -o your_bridge0 -d 172.17.0.2 -p tcp --m tcp --dport 80 -j ACCEPT

Por supuesto, entonces tendrías que asegurarte de que las reglas se mantendrán, lo cual es un problema completamente diferente. A Docker no parece importarle mucho quién administra iptables (ufw, firewalld, etc.).

Esto funcionará, incluso si el proxy docker no se está ejecutando en absoluto. docker-proxy se une a los puertos del host, lo que significa que usted controla el tráfico en la cadena INPUT en la tabla de filtros (es decir, el propio host). Todavía no he descubierto por qué Docker se creó de esta manera, pero de forma predeterminada, si expone un contenedor (usando -p) y luego elimina la regla DNAT, seguirá funcionando, porque la solicitud llegará a INPUT cadena directamente. Lo cual es alucinante, pero no importa.

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