Un desarrollador encuentra problemas al intentar contener un servidor WebSocket mediante Docker. El código del servidor escribe en una nueva conexión con "conectado" y funciona bien fuera del contenedor, pero cuando se coloca dentro de un contenedor Docker, el cliente entra en pánico debido a un error de "restablecimiento de conexión" con el mensaje de error "leer tcp [::1] :60328->[::1]:8000: lectura: conexión restablecida por igual." El desarrollador no está seguro de qué cambios son necesarios para establecer una conexión WebSocket con el servidor dentro del contenedor.
Para solucionar este problema, el desarrollador debe modificar la dirección de escucha del servidor . En lugar de usar "localhost:8000", que limita al servidor a escuchar en la dirección IP 127.0.0.1 dentro del contenedor, deberían cambiarlo a ":8000".
Usando ":8000" como dirección de escucha, el servidor escuchará en todas las direcciones IP asignadas al contenedor. Esta modificación garantiza que cuando el tráfico se reenvíe al contenedor en su dirección IP asignada, habrá un servidor de escucha listo para aceptar la conexión.
Docker desempeña un papel crucial en esto escenario creando reglas de iptables para reenviar el tráfico desde la máquina host al contenedor. Estas reglas son esenciales para permitir que el cliente se comunique con el servidor WebSocket dentro del contenedor. De forma predeterminada, los contenedores Docker escuchan sus direcciones IP internas, a las que no se puede acceder directamente desde la máquina host. Las reglas de iptables creadas por Docker cierran esta brecha de comunicación.
Para ver estas reglas de iptables, el desarrollador puede usar los siguientes comandos:
iptables -n -L iptables -t nat -n -L
Al realizar el cambio mencionado en la dirección de escucha y comprender el reenvío de Docker, el desarrollador puede establecer con éxito una conexión WebSocket con el servidor dentro del contenedor Docker, resolviendo el problema de "restablecimiento de conexión". "error y habilitando el comportamiento esperado de impresión "conectada" en el lado del cliente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3