Búsqueda de sitios web

¿Cómo implementar y ejecutar Redis en Docker?


Redis es un almacén de estructura de datos en memoria de código abierto que se puede utilizar como base de datos, caché o intermediario de mensajes. Es conocido por sus capacidades de alto rendimiento y baja latencia, lo que lo convierte en una opción popular para aplicaciones en tiempo real.

Por otro lado, Docker es una plataforma de contenedores que permite a los desarrolladores empaquetar aplicaciones en contenedores que pueden ejecutarse en cualquier lugar y en cualquier plataforma. Los contenedores son livianos, rápidos de implementar y ocupan poco espacio en comparación con las máquinas virtuales tradicionales.

Preparación para la implementación

Instalación de Docker en su máquina

Antes de poder implementar Redis en Docker, deberá instalar Docker en su máquina. Para hacer esto, vaya al sitio web oficial de Docker y descargue la versión adecuada para su sistema operativo. El proceso de instalación puede tardar unos minutos, pero una vez completado, deberías tener la última versión de Docker en funcionamiento.

Descarga de la imagen de Redis desde Docker Hub

Una vez que haya instalado Docker, puede comenzar descargando la imagen de Redis desde Docker Hub. Esto es bastante sencillo de hacer: simplemente abra una terminal o una ventana del símbolo del sistema y escriba el siguiente comando:

docker pull redis  

Esto descargará la última versión de Redis disponible en Docker Hub en su registro de contenedor local.

Crear un Dockerfile para configuraciones personalizadas

Si bien es posible ejecutar un contenedor de Redis con sus configuraciones predeterminadas, utilizar una configuración personalizada puede optimizar su rendimiento y hacerlo más seguro. Para crear una configuración personalizada, comience creando un nuevo archivo llamado "Dockerfile" en su directorio de trabajo.

En este archivo, especifique la imagen base como "redis". Luego agregue cualquier archivo de configuración adicional que desee usar con los comandos COPY.

Especifique los comandos adicionales que deban ejecutarse con los comandos RUN. Por ejemplo-

FROM redis COPY redis.conf /usr/local/etc/redis/redis.conf 
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]  

Esto copiará su archivo de configuración personalizado de Redis (llamado "redis.conf") en el contenedor en /usr/local/etc/redis/.

Ejecutará Redis utilizando este archivo de configuración personalizado basado en el comando CMD especificado aquí. Si sigue estos pasos de forma eficaz, estará bien preparado para implementar y ejecutar Redis en contenedores acoplables sin problemas.

Implementación de Redis en Docker

Ejecutar un contenedor Redis con configuraciones predeterminadas

La forma más sencilla de implementar Redis en un contenedor Docker es utilizar la imagen oficial de Redis de Docker Hub. Para ejecutar un contenedor con configuraciones predeterminadas, use el siguiente comando:

docker run --name my-redis -d redis  

Este comando inicia un nuevo contenedor llamado "my-redis" utilizando la última versión de la imagen de Redis, en modo separado. La configuración predeterminada configura Redis como un servidor de un solo nodo.

Para verificar si su contenedor se está ejecutando, use el siguiente comando:

docker ps  

Debería ver "my-redis" en la lista entre sus contenedores en ejecución. También puede inspeccionar los registros de su contenedor ejecutando:

docker logs my-redis  

Esto le mostrará cualquier resultado generado por el servidor Redis.

Configurar el contenedor Redis con configuraciones personalizadas usando variables de entorno o archivos de configuración

Para personalizar su implementación de Redis, puede pasar opciones de configuración a su contenedor mediante variables de entorno o archivos de configuración. Usar variables de entorno es más conveniente para cambios pequeños, mientras que usar archivos de configuración le permite configurar muchas opciones a la vez y reutilizarlas en múltiples instancias.

Por ejemplo, para establecer una contraseña personalizada con fines de autenticación, puede utilizar una variable de entorno como esta:

docker run --name my-redis -d -e REDIS_PASSWORD=mypassword redis  

Para configurar muchas opciones a la vez usando un archivo de configuración, cree un archivo de configuración (por ejemplo, `myconfig.conf`) con la configuración deseada y móntelo como un volumen dentro de su contenedor como este:

docker run --name my-redis -d -v /path/to/myconfig.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf  

Interactuando con Redis en Docker

Usando redis-cli para interactuar con la instancia en contenedor de Redis

Después de implementar con éxito Redis en un contenedor Docker, es importante verificar que se esté ejecutando correctamente e interactuar con Redis para realizar tareas como configurar y recuperar pares clave-valor. Una forma de lograrlo es mediante la herramienta de interfaz de línea de comandos redis-cli. Para utilizar esta herramienta, deberá iniciar una nueva ventana de terminal y ejecutar el siguiente comando:

docker exec -it redis-cli

Este comando iniciará una sesión interactiva con la instancia en contenedor de Redis, lo que le permitirá ejecutar comandos de Redis tal como lo haría en una instancia local de Redis.

Por ejemplo, puede configurar una clave usando el siguiente comando:

set mykey "hello world"  

Luego puede recuperar ese valor usando el siguiente comando:

get mykey  

Conexión a la instancia en contenedor de Redis desde una aplicación que se ejecuta en la máquina host

Además de interactuar con la instancia en contenedor de Redis a través de la herramienta redis-cli, también es posible que una aplicación que se ejecuta en su máquina host (fuera de Docker) se conecte e interactúe con una instancia en contenedor de Redis. Para hacerlo, deberá obtener la dirección IP de su red de host Docker ejecutando:

docker network inspect bridge   

Una vez que haya obtenido esta dirección IP, simplemente úsela en el código de su aplicación como si fuera cualquier otra dirección IP para acceder a un servicio externo.

Tenga en cuenta que cualquier asignación de puerto definida en su archivo docker run o docker-compose.yml también deberá tenerse en cuenta al intentar la conexión. Por ejemplo, si su red de host Docker tiene una dirección IP de 172.17.0.1 y asignó el puerto 6379 de su contenedor al puerto 6380 en su máquina host, puede conectarse a Redis desde su aplicación usando el siguiente código:

python import redis 
r = redis.StrictRedis(host='172.17.0.1', port=6380, db=0) r.set('mykey', 'hello world')  

En este ejemplo, utilizamos la biblioteca Python Redis para conectarnos a Redis y establecer un par clave-valor. Sin embargo, cualquier lenguaje de programación con una biblioteca cliente de Redis se puede usar de manera similar para interactuar con una instancia en contenedor de Redis que se ejecuta en Docker.

Mejores prácticas para ejecutar Redis en Docker

Optimización del rendimiento con límites de memoria, persistencia y configuración de red

Al ejecutar Redis en contenedores Docker, es importante optimizar el rendimiento de las instancias. Esto se puede lograr configurando límites de memoria, configuraciones de persistencia y configuraciones de red.

Para optimizar el uso de la memoria, puede configurar la cantidad máxima de memoria que Redis puede usar usando la configuración `maxmemory`. Sin esta configuración, Redis continuará asignando memoria hasta que se agote, lo que puede provocar una degradación del rendimiento o incluso fallas.

Proteger su implementación con autenticación y cifrado

Al implementar Redis en contenedores Docker en entornos de producción donde se pueden almacenar o transmitir datos confidenciales a través de la red, es importante asegurarse de que su implementación sea segura configurando la autenticación y el cifrado. Redis admite la autenticación a través de un mecanismo basado en contraseña donde los clientes deben proporcionar una contraseña antes de poder ejecutar cualquier comando en Redis.

Para habilitar la autenticación en su instancia en contenedor de Redis, simplemente establezca una contraseña de autenticación en el archivo de configuración y proporciónela al iniciar un contenedor con el comando docker run. También puede proteger la comunicación entre las aplicaciones cliente y sus instancias en contenedores de redis mediante cifrado SSL/TLS habilitando TLS tanto en el lado del cliente (es decir, aplicaciones) como en el lado del servidor (es decir, instancias de redis).

Conclusión

En este artículo, exploramos los beneficios de implementar y ejecutar Redis en Docker. Hemos visto lo fácil que es configurar un contenedor Redis en Docker y cómo puede mejorar la escalabilidad, la flexibilidad y la facilidad de administración.

Artículos relacionados: