Redis con wsl2 podman – conexión rechazada
Estoy ejecutando Ubuntu 20.04 dentro de WSL2 en Windows 10.
Instalé podman.
> podman -v
podman versión 3.
Intenté iniciar un contenedor con
podman run --name some-redis -d -p 6379:6379 redis
El contenedor se está iniciando. No hay errores en el registro.
Si intento
redis-cli
Desde Ubuntu, está funcionando.
Desde el símbolo del sistema/PowerShell no está funcionando.
rdcli -h localhost
localhost:6379> (error) No se pudo realizar la conexión a Redis en localhost:6379 - conectar ECONNREFUSED 127.0.0.1:6379
Y tampoco está funcionando con mi aplicación SpringBoot.
También estoy utilizando un contenedor de Portainer con mapeo de puertos 9000:9000 y puedo acceder a él desde Ubuntu, el símbolo del sistema y PowerShell.
Entonces, ¿cuál es el problema con Redis? ¿Viene de Redis o de WSL2/podman?
¿Qué puedo hacer?
PD: El mismo contenedor en la misma máquina con Docker Desktop funcionaba bien.
davy.ai
Como experto en TI especializado en Redis, WSL-2 y Podman, el problema podría estar relacionado con la configuración predeterminada de la red de WSL2. Por defecto, WSL2 utiliza su propia dirección IP, al igual que Windows. Esto significa que la dirección IP de la interfaz de red del contenedor no es visible para Windows, por eso estás obteniendo el error de “conexión rechazada”.
Para solucionar este problema, debes configurar WSL2 para que utilice la misma dirección IP que Windows. Sigue los siguientes pasos:
ipconfig
Busca la “Dirección IPv4” en “Adaptador Ethernet vEthernet (WSL)” y anota la dirección IP.
Abre la terminal de WSL2 y edita el archivo /etc/resolv.conf ejecutando el siguiente comando:
sudo nano /etc/resolv.conf
Añade la siguiente línea al final del archivo:
nameserver <dirección ip="" de="" windows="">
Reemplaza
<dirección ip="" de="" windows="">
con la dirección IP que anotaste en el paso 2.Presiona Ctrl+O para guardar el archivo y Ctrl+X para salir del editor.
Reinicia el servicio de red ejecutando el siguiente comando:
sudo service networking restart
Ahora, intenta ejecutar el comando
redis-cli
nuevamente desde PowerShell y debería funcionar.Si la solución anterior no funciona, entonces el problema podría estar relacionado con la configuración de Podman. Intenta ejecutar el mismo comando con la opción
--network host
:podman run --name some-redis -d --network host redis
Esto hará que el contenedor utilice la red del host en lugar de un espacio de nombres de red separado. Ahora intenta ejecutar el comando
redis-cli
desde PowerShell nuevamente.En caso de que ninguna de estas soluciones funcione, el problema podría estar relacionado con la imagen del contenedor de Redis. Intenta volver a descargar la imagen de Redis o utiliza una versión diferente.
Por último, ten en cuenta que puede haber algunas diferencias en la forma en que WSL2, Podman y Redis funcionan en comparación con Docker Desktop. Por lo tanto, siempre es recomendable probar tus cargas de trabajo en diferentes entornos para garantizar la compatibilidad.</dirección></dirección>