Redis es una base de datos en memoria de alta disponibilidad. Su almacén de datos clave-valor persistente en disco es ideal para múltiples usos de alta disponibilidad.

Por otro lado, Docker es una herramienta para contenerizar aplicaciones y servicios, aislando sus entornos y permitiendo que se ejecuten por separado. Puedes utilizar Docker como administrador de paquetes para aplicaciones y servicios con todas las dependencias necesarias, configuraciones, scripts, etc. Un script llamado Dockerfile se coloca dentro del contenedor Docker y te permite desplegar el contenedor como una entidad única.

Este artículo te enseña a utilizar eficazmente estas dos tecnologías de código abierto. También repasa por qué es vital ejecutar clusters Redis dentro de contenedores Docker, y las ventajas y beneficios de hacerlo en comparación con la ejecución de clusters Redis en máquinas virtuales o servidores bare metal.

Los Distintos Usos de Redis

Redis tiene varias ventajas. Sus usos más populares son:

  • Caché distribuida de base de datos clave-valor
  • Agente de mensajes
  • Servidor de caché de objetos persistentes

Además, Redis admite múltiples tipos y estructuras de datos, lo que lo hace adecuado para su uso como capa de base de datos primaria y secundaria para aplicaciones. También admite listas, flujos, hashes, conjuntos, etc.

Sin embargo, puedes llevar aún más lejos las ventajas de Redis al contenerizarlo..

Redis Es Mejor Dentro de un Contenedor

Redis es una de las imágenes Docker más populares del registro Docker, con más de mil millones de descargas. La razón para contenerizar las aplicaciones Redis es obtener las ventajas de Docker y el soporte de la comunidad para los casos de uso más comunes de Redis.

La imagen Docker de Redis cuenta con una comunidad de código abierto que crea y mantiene una documentación legible. Y por si fuera poco, Docker es muy fiable y permite un uso sencillo y flexible.

Facilidad de uso

Docker aísla los entornos tanto de las aplicaciones como de los servicios que se ejecutan dentro de los contenedores. El aislamiento significa que puedes empaquetar, construir y enviar imágenes de Redis que funcionen independientemente del sistema operativo del host, lo que facilita el desarrollo y la ejecución de aplicaciones Redis dentro de Docker. Además, Docker Desktop simplifica la configuración de un entorno de desarrollo local coherente, lo que resulta especialmente útil para equipos grandes.

Seguridad

Puedes buscar vulnerabilidades de seguridad con Redis dentro de un contenedor. Docker utiliza Snyk, una herramienta que proporciona visibilidad sobre la seguridad de las imágenes Docker. Analiza los contenedores Docker y proporciona detalles y soluciones en caso de imágenes corruptas. Docker también puede generar una lista de materiales de software (SBOM) para escanear todas las dependencias utilizadas en la construcción de imágenes de contenedores, aunque todavía es experimental.

Flexibilidad

Docker está disponible para la mayoría de los sistemas operativos y aplicaciones basados en Unix y Windows. Dado que utiliza contenedores para aislar el software de su entorno y asegurarse de que funciona con todos los sistemas, las aplicaciones y servicios Redis siempre se ejecutan a pesar de la infraestructura.

Fiabilidad

Docker te permite ejecutar cualquier carga de trabajo en contenedores en cualquier entorno de forma fiable. Redis es fiable en Docker porque los contenedores Docker toman periódicamente instantáneas de la imagen del contenedor, lo que te permite volver a estas instantáneas en caso de que la base de datos esté defectuosa o dañada. También puedes crear un volumen Docker montando un directorio que contenga el archivo de la base de datos Redis dentro del contenedor.

Un volumen de Docker ayuda a mantener el contenedor a salvo de cualquier forma de pérdida accidental de datos. Sin embargo, una advertencia es que los volúmenes Docker no incluyen instantáneas de la imagen. Debes guardar manualmente o hacer copias de seguridad periódicas de los datos de tu archivo de base de datos Redis.

Cómo Utilizar Redis con Docker

Para poner tu tienda Redis dentro de un contenedor Docker, debes tener Docker en el entorno de destino. Las siguientes instrucciones te muestran cómo instalar Docker en Windows.

Puedes seguir una guía en el sitio web de Docker para un sistema operativo Unix o basado en Unix. Tras la instalación y configuración, puedes crear una red dentro de tu contenedor Docker. A continuación, puedes instalar Redis y crear una base de datos. Por último, puedes realizar operaciones en tu base de datos Redis.

Primero, instala Docker en tu sistema operativo. Opcionalmente, navega al Docker Hub y crea una cuenta. Necesitas una cuenta para crear y publicar tus imágenes.

Docker hub sign-up form
Hub Docker

Tras crear una cuenta, accede a Docker Hub y descarga la última versión de Docker Desktop de tu sistema operativo.

Download page for Docker Desktop with options for operating systems.
Página de descarga de Docker

Tras el procedimiento de instalación, ve a la ventana de tu terminal para ver si el motor Docker está listo para ejecutarse e introduce el siguiente comando:

docker --version
Check the version of Docker installed
Versión de Docker instalada

A continuación, escribe: docker-compose --version.

Check the version of Compose installed with Docker
Compose instalado con Docker

Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor mediante archivos YAML, que utilizas para configurar los servicios de la aplicación.

Puedes ejecutar un Redis Dockerizado para validar que el motor Docker está en funcionamiento utilizando el código siguiente. Este ejemplo ejecuta la imagen Redis desde Docker Hub y la denomina my-redis-container.

docker run --name my-redis-container -d redis
Run the Redis image from Docker Hub named my-redis-container
Imagen Redis de Docker Hub denominada mi-redis-contenedor

Como no tienes la imagen localmente, Docker extrae la imagen Redis del Docker Hub.

Ahora, puedes abrir Docker Desktop para confirmar que ha extraído la imagen Redis. En el Escritorio, haz clic en Images en el panel lateral izquierdo.

Verify that your Redis image is up and running from Docker Desktop
Escritorio Docker

Ahora puedes crear una red. Ten en cuenta que el controlador Docker utiliza el puente o los controladores de red integrados en la superposición para crear una red Docker. También puedes instalar y utilizar un controlador de red de terceros.

La diferencia es que las redes puente están aisladas en una única instalación de motor Docker, mientras que las redes superpuestas abarcan varios hosts Docker, cada uno de los cuales ejecuta un motor.

Tipo:

docker network create -d bridge kinsta-demo-network
Create a new Docker network with the bridge driver
Red Docker con el controlador de puente

Si no especificas ningún controlador por defecto, Docker utiliza el controlador puente para crear una nueva red, ya que crea automáticamente el controlador puente cuando instalas el motor Docker. Sin embargo, si ejecutas un contenedor Docker con el comando de ejecución Docker, no utilizará esta red.

Ahora que ya tienes una red, lo siguiente es instalar Redis dentro del contenedor Docker. Para ello, escribe: docker pull redis.

Pull the Redis image from the Docker Hub
Extrae la imagen de Redis del Docker Hub

Para comprobar que la imagen de Redis está instalada correctamente, ejecuta uno de los siguientes comandos:

docker images
docker image ls
List available Docker images in the user's terminal
Imágenes Docker disponibles en el terminal del usuario

A continuación, crea e inicia el contenedor Redis. Para ello, ejecuta el siguiente comando:

docker run -it –name dev_kinsta_redis_container -d redis
Create and run the Docker container
Docker conatainer

Ahora comprueba que Redis se está ejecutando en el contenedor. Para ello, escribe: docker ps.

Verify that Redis is up and running in a container
Comprueba que Redis está funcionando en un contenedor

Ahora que has confirmado que tu contenedor Docker está en funcionamiento, puedes añadir el contenedor a la red. Escribe: docker network connect .

Add a Docker container to the created docker network
Añade un contenedor Docker a la red docker creada

Con todo funcionando como se espera, el siguiente paso es verificar que tu servidor Redis que se ejecuta dentro de Docker está listo para aceptar conexiones. Para ello, utiliza docker logs.

Verify the Redis image is running inside the Docker container
Comprueba que la imagen Redis se ejecuta dentro del contenedor Docker

A continuación, debes crear una base de datos porque necesitas una forma de conectarte al contenedor Redis para ejecutar comandos en el servidor. Para ello, escribe: docker exec -it bash. Puedes utilizar indistintamente el nombre del contenedor y el ID del contenedor.

Connect to the Redis container instance
Conéctate a la instancia del contenedor Redis.

En el contenedor, utiliza la CLI para ejecutar comandos. Ten en cuenta que Redis instala automáticamente los hosts Docker. Para utilizar la Redis-CLI, escribe: redis-cli.

Use the Redis CLI to run Redis commands
Utiliza la CLI de Redis para ejecutar comandos de Redis

Esto te conecta al puerto por defecto para Redis en el host local. Escribe ping, y la respuesta debe ser pong.

Test to see if the Redis connection is up and running
Comprueba si la conexión a Redis está en funcionamiento

A continuación, selecciona una base de datos dentro de tu servidor Redis escribiendo select. Aunque la base de datos por defecto es 0, selecciona db 1.

Select a particular Redis database
Selecciona una base de datos Redis concreta

A continuación, inserta datos en la base de datos. Utiliza el comando Redis SET. Para ello, escribe SET <key> <value>.

Por ejemplo

SET mykey "Hello"

Para obtener la misma clave, escribe

get myKey
Insert and retrieve data from Redis
Insertar y recuperar datos de Redis

Para obtener el valor de la clave, ejecuta get. Esto devuelve el valor. A continuación, controla tu base de datos Redis escribiendo MONITOR.

Monitor the Redis database
Monitorizar la base de datos Redis

Por último, detén el servidor Redis saliendo de la CLI. Escribe exit dos veces para salir de la CLI y de Redis.

Exit from the Redis CLI
Salir de la CLI de Redis

Por último, detén la ejecución del contenedor Redis escribiendo docker stop.

Execute the command to stop the Docker container from running
Ejecuta el comando para detener la ejecución del contenedor Docker

Redis con DevKinsta

DevKinsta te permite conectar un sitio WordPress a una base de datos Redis. Con DevKinsta, el add-on Redis funciona perfectamente como una caché de objetos para persistir los datos a lo largo de varias cargas de página. Esto significa que, utilizando el complemento Redis, puedes utilizar la caché para reutilizar objetos en lugar de consultar constantemente la base de datos MySQL.

Tras descargar y configurar DevKinsta, instala como dependencia el Docker Desktop, que utiliza para crear archivos de entorno locales dentro de un contenedor. Con esta configuración, puedes configurar el complemento Redis en Devkinsta.

Por lo tanto, el add-on Redis para DevKinsta se puede utilizar como fuente secundaria, reduciendo la carga de la base de datos primaria, aumentando los tiempos de respuesta y haciendo que la aplicación funcione más rápido.

Esto se traduce en que la aplicación maneja más carga y escala de forma eficiente. Consulta nuestra documentación sobre el uso de Redis como caché de objetos persistente para tu sitio web de WordPress.

Resumen

Ejecutar Redis dentro de un contenedor Docker tiene muchas ventajas. Ofrece un entorno aislado para tus aplicaciones, por lo que ya no tienes que preocuparte de la plataforma en la que despliegas tus aplicaciones. Además, Docker permite facilidad de uso, flexibilidad y alta fiabilidad.

En cuanto a la seguridad, puedes comprobar y escanear vulnerabilidades de seguridad desde el primer momento con Synk, una herramienta que proporciona visibilidad sobre la seguridad de las imágenes Docker. Y en cuanto a la flexibilidad, Docker funciona para la mayoría de los sistemas operativos y aplicaciones basados en Unix y Windows. Esta flexibilidad significa que las aplicaciones o servicios en contenedores o dockerizados siempre se ejecutan independientemente del sistema operativo.

Es fácil utilizar Docker y el add-on Redis con DevKinsta, que pone en marcha un sitio WordPress dockerizado localmente cuando lo inicias. Echa un vistazo a DevKinsta y al add-on Redis para aprovechar hoy mismo la potencia de Redis en Docker.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.