Cómo y por qué ejecutar Redis en Docker
Publicado: 2023-05-02Redis es una base de datos en memoria de alta disponibilidad. Su almacén de datos de clave-valor persistente en el disco es ideal para múltiples usos de alta disponibilidad.
Por otro lado, Docker es una herramienta para contenedorizar aplicaciones y servicios, aislando sus entornos y permitiéndoles ejecutarse por separado. Puede usar Docker como administrador de paquetes para aplicaciones y servicios con todas las dependencias, configuraciones, scripts, etc. necesarios. Un script llamado Dockerfile se coloca dentro del contenedor Docker y le permite implementar el contenedor como una sola entidad.
Este artículo le enseña cómo usar estas dos tecnologías de código abierto de manera efectiva. También aborda por qué es vital ejecutar clústeres de Redis dentro de contenedores Docker y las ventajas y beneficios de hacerlo en comparación con la ejecución de clústeres de Redis en máquinas virtuales o servidores bare metal.
Los diversos usos de Redis
Redis tiene varias ventajas. Sus usos más populares incluyen:
- Caché de base de datos clave-valor distribuida
- Agente de mensajes
- Servidor de almacenamiento en caché de objetos persistentes
Además, Redis puede admitir 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, puede impulsar aún más los beneficios de Redis al incluirlo en contenedores.
Redis es mejor dentro de un contenedor
Redis es una de las imágenes de Docker más populares en el registro de Docker, con más de mil millones de descargas. El motivo para contener las aplicaciones de Redis es obtener los beneficios de Docker y el apoyo de la comunidad para los casos de uso de Redis más comunes.
La imagen de Redis Docker tiene una comunidad de código abierto que crea y mantiene una documentación clara. Y para colmo, Docker es altamente confiable y permite un uso fácil y flexible.
Facilidad de uso
Docker aísla los entornos tanto para las aplicaciones como para los servicios que se ejecutan dentro de los contenedores. El aislamiento significa que puede empaquetar, compilar y enviar imágenes de Redis que funcionan independientemente del sistema operativo host, lo que facilita el desarrollo y la ejecución de aplicaciones de Redis dentro de Docker. Además, Docker Desktop simplifica la configuración de un entorno de desarrollo local coherente, lo que es especialmente útil para equipos grandes.
Seguridad:
Puede buscar vulnerabilidades de seguridad con Redis dentro de un contenedor. Docker usa Snyk, una herramienta que brinda visibilidad sobre la seguridad de las imágenes de Docker. Escanea los contenedores de 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 creació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 para garantizar que funcione con todos los sistemas, las aplicaciones y los servicios de Redis siempre se ejecutan a pesar de la infraestructura.
Fiabilidad
Docker le permite ejecutar cualquier carga de trabajo en contenedores en cualquier entorno de manera confiable. Redis es confiable en Docker porque los contenedores de Docker toman periódicamente instantáneas de la imagen del contenedor, lo que le permite volver a estas instantáneas en caso de una base de datos dañada o dañada. También puede crear un volumen de Docker montando un directorio que contenga el archivo de la base de datos de 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 de Docker no incluyen instantáneas de imágenes. Debe guardar manualmente o hacer una copia de seguridad de los datos en su archivo de base de datos de Redis periódicamente.
Cómo usar Redis con Docker
Para colocar su tienda Redis dentro de un contenedor Docker, debe tener Docker en el entorno de destino. Las siguientes instrucciones le muestran cómo instalar Docker en Windows.
Puede seguir una guía en el sitio web de Docker para un sistema operativo Unix o basado en Unix. Después de la instalación y configuración, puede crear una red dentro de su contenedor Docker. Luego puede instalar Redis y crear una base de datos. Finalmente, puede realizar operaciones en su base de datos Redis.
Primero, instale Docker en su sistema operativo. Opcionalmente, navegue a Docker Hub y cree una cuenta. Necesitas una cuenta para crear y publicar tus imágenes.
Después de crear una cuenta, inicie sesión en Docker Hub y descargue la última versión de Docker Desktop para su sistema operativo.
Después del procedimiento de instalación, vaya a la ventana de su terminal para ver si Docker Engine está listo para ejecutarse e ingrese el siguiente comando:
docker --version
Luego escriba: docker-compose --version
.
Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores mediante archivos YAML, que se utilizan para configurar los servicios de la aplicación.
Puede ejecutar un Dockerized Redis para validar que Docker Engine está en funcionamiento con el siguiente código. Este ejemplo ejecuta la imagen de Redis desde Docker Hub y la denomina my-redis-container .
docker run --name my-redis-container -d redis
Como no tiene la imagen localmente, Docker extrae la imagen de Redis de Docker Hub.
Ahora, puede abrir Docker Desktop para confirmar que extrajo la imagen de Redis. En el Tablero, haga clic en Imágenes en el panel del lado izquierdo.
Ahora, puede crear una red. Tenga en cuenta que el controlador Docker utiliza el puente o los controladores de red integrados superpuestos para crear una red Docker. También puede instalar y utilizar un controlador de red de terceros.
La diferencia es que las redes de puente están aisladas en una sola instalación de Docker Engine, mientras que las redes superpuestas abarcan varios hosts de Docker, cada uno de los cuales ejecuta un motor.
Tipo:
docker network create -d bridge kinsta-demo-network
Si no especifica ningún controlador de forma predeterminada, Docker usa el controlador de puente para crear una nueva red, ya que crea automáticamente el controlador de puente cuando instala Docker Engine. Sin embargo, si ejecuta un contenedor de Docker con el comando de ejecución de Docker, no utilizará esta red.
Ahora que tiene una red, lo siguiente es instalar Redis dentro del contenedor Docker. Para hacerlo, escriba: docker pull redis
.
Para verificar que la imagen de Redis esté instalada correctamente, ejecute uno de los siguientes comandos:
docker images
docker image ls
A continuación, crea e inicia el contenedor de Redis. Para hacerlo, ejecute el siguiente comando:
docker run -it –name dev_kinsta_redis_container -d redis
Ahora verifique que Redis se esté ejecutando en el contenedor. Para hacerlo, escriba: docker ps
.
Ahora que ha confirmado que su contenedor Docker está en funcionamiento, puede agregar el contenedor a la red. Tipo: docker network connect
.
Con todo funcionando como se esperaba, el siguiente paso es verificar que su servidor Redis que se ejecuta dentro de Docker esté listo para aceptar conexiones. Para hacerlo, use docker logs
.
A continuación, debe crear una base de datos porque necesita una forma de conectarse al contenedor de Redis para ejecutar comandos en el servidor. Para hacer esto, escriba: docker exec -it bash
. Puede usar el nombre del contenedor y el ID del contenedor indistintamente.
En el contenedor, use la CLI para ejecutar comandos. Tenga en cuenta que Redis instaló automáticamente los hosts de Docker. Para usar Redis-CLI, escriba: redis-cli
.
Esto lo conecta al puerto predeterminado para Redis en el host local. Escriba: ping
y la respuesta debe ser pong
.
A continuación, seleccione una base de datos dentro de su servidor Redis escribiendo select
. Aunque la base de datos predeterminada es 0
, seleccione db 1
.
A continuación, inserte datos en la base de datos. Utilice el comando SET
de Redis. Para ello, escriba SET <key> <value>
.
Por ejemplo:
SET mykey "Hello"
Para obtener la misma clave, escriba:
get myKey
Para obtener el valor de la clave, ejecute get
. Esto devuelve el valor. Luego, monitoree su base de datos de Redis escribiendo MONITOR
.
Finalmente, detenga el servidor Redis saliendo de la CLI. Escriba exit
dos veces para salir de la CLI y Redis.
Finalmente, detenga la ejecución del contenedor de Redis escribiendo docker stop
.
Redis con DevKinsta
DevKinsta le permite conectar un sitio de WordPress a una base de datos de Redis. Con DevKinsta, el complemento de Redis funciona a la perfección como un caché de objetos para conservar los datos en varias cargas de página. Esto significa que al usar el complemento Redis, puede usar el caché para reutilizar objetos en lugar de consultar constantemente la base de datos MySQL.
Después de descargar y configurar DevKinsta, instale Docker Desktop como una dependencia, que utiliza para crear archivos de entorno local dentro de un contenedor. Con esta configuración, puede configurar el complemento Redis en Devkinsta.
Por lo tanto, el complemento de Redis para DevKinsta se puede usar como una fuente secundaria, lo que reduce la carga en la base de datos principal, aumenta los tiempos de respuesta y hace que la aplicación funcione más rápido.
Esto se traduce en que la aplicación maneja más carga y escala de manera eficiente. Consulte esta publicación para usar el complemento Redis con su sitio web.
Resumen
Existen muchas ventajas al ejecutar Redis dentro de un contenedor Docker. Ofrece un entorno de espacio aislado para sus aplicaciones, por lo que ya no tiene que preocuparse por la plataforma en la que implementa sus aplicaciones. Además, Docker permite facilidad de uso, flexibilidad y alta confiabilidad.
Con respecto a la seguridad, puede verificar y escanear las vulnerabilidades de seguridad de forma inmediata con Synk, una herramienta que proporciona visibilidad de la seguridad de las imágenes de Docker. Y con respecto 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 dockerizados o en contenedores siempre se ejecutan independientemente del sistema operativo.
Es fácil usar Docker y el complemento de Redis con DevKinsta, que activa un sitio de WordPress dockerizado localmente cuando lo inicia. Consulte DevKinsta y el complemento de Redis para obtener el poder de Redis en Docker hoy.