Redis è un database in-memory a elevata disponibilità. Il suo archivio di dati chiave-valore persistente su disco è ideale per molti usi ad alta disponibilità.

Docker, invece, è uno strumento che serve a containerizzare applicazioni e servizi, isolare i loro ambienti e consentirne l’esecuzione separatamente. Potete usare Docker come gestore di pacchetti per applicazioni e servizi con tutte le dipendenze, le configurazioni, gli script e così via. Uno script chiamato Dockerfile viene inserito all’interno del container Docker e vi permette di distribuire il container come un’unica entità.

Questo articolo vi mostrerà come usare efficacemente queste due tecnologie open-source. Parleremo anche dei motivi per cui l’esecuzione di cluster Redis all’interno di container Docker è fondamentale e quali sono i vantaggi e i benefici di questa operazione rispetto all’esecuzione di cluster Redis su macchine virtuali o server bare metal.

I vari usi di Redis

Redis presenta numerosi vantaggi. I suoi usi più diffusi sono:

  • Cache distribuita di database a valore-chiave
  • Broker di messaggi
  • Server di caching di oggetti persistenti

Inoltre, Redis è in grado di supportare diversi tipi di dati e strutture, il che lo rende adatto a essere utilizzato come livello di database primario e secondario per le applicazioni. Supporta anche liste, flussi, hash, set, ecc.

Tuttavia, potete approfittare ancora di più dei vantaggi di Redis containerizzandolo.

Redis funziona meglio all’interno di un Container

Redis è una delle immagini Docker più popolari nel registro Docker, con oltre un miliardo di download. Il motivo della containerizzazione delle applicazioni Redis è quello di ottenere i vantaggi di Docker e il supporto della comunità per i casi d’uso più comuni di Redis.

L’immagine Docker di Redis ha una comunità open-source che crea e mantiene una documentazione chiara. Inoltre, Docker è altamente affidabile e consente un utilizzo semplice e flessibile.

Facilità d’uso

Docker isola gli ambienti delle applicazioni e dei servizi che girano all’interno dei container. L’isolamento permette di confezionare, costruire e distribuire immagini di Redis che funzionano indipendentemente dal sistema operativo ospite, il che rende facile lo sviluppo e l’esecuzione di applicazioni Redis all’interno di Docker. Inoltre, Docker Desktop semplifica la creazione di un ambiente di sviluppo locale coerente, particolarmente utile per i team più numerosi.

Sicurezza

È possibile eseguire una scansione delle vulnerabilità di sicurezza con Redis all’interno di un container. Docker usa Snyk, uno strumento che fornisce visibilità sulla sicurezza delle immagini Docker. Esegue la scansione dei container Docker e fornisce dettagli e rimedi in caso di immagini corrotte. Docker può anche generare una distinta base del software (SBOM) per la scansione di tutte le dipendenze utilizzate nella creazione delle immagini dei container, anche se è ancora in fase sperimentale.

Flessibilità

Docker è disponibile per la maggior parte dei sistemi operativi e delle applicazioni basate su Unix e Windows. Poiché i container servono a isolare il software dal suo ambiente per garantire che funzioni con tutti i sistemi, le applicazioni e i servizi Redis funzionano sempre nonostante l’infrastruttura.

Affidabilità

Docker vi permette di eseguire qualsiasi carico di lavoro containerizzato in qualsiasi ambiente in modo affidabile. Redis è affidabile in Docker perché i container Docker eseguono periodicamente delle istantanee dell’immagine del container, e vi permettono di tornare a queste istantanee in caso di database danneggiato o corrotto. Potete anche creare un volume Docker montando una directory contenente il file del database Redis all’interno del container.

Un volume Docker aiuta a mantenere il container al sicuro da qualsiasi forma di perdita accidentale di dati. È però importante ricordare che i volumi Docker non includono le istantanee dell’immagine. Dovete salvare o fare il backup dei dati del vostro database Redis manualmente e periodicamente.

Come usare Redis con Docker

Per inserire il vostro archivio Redis in un container Docker, dovete avere Docker nell’ambiente di destinazione. Le seguenti istruzioni vi mostrano come installare Docker su Windows.

Per un sistema operativo Unix o basato su Unix, seguite la guida sul sito web di Docker. Dopo l’installazione e la configurazione, create una rete all’interno del vostro container Docker. Installate poi Redis e create un database. A questo punto, potrete eseguire delle operazioni sul vostro database Redis.

Per prima cosa, installate Docker sul vostro sistema operativo. In alternativa, accedete a Docker Hub e create un account. Avete bisogno di un account per creare e pubblicare le vostre immagini.

Schermata di Docker hub con il modulo di iscrizione sulla destra
Docker Hub

Dopo aver creato un account, accedete a Docker Hub e scaricate l’ultima versione di Docker Desktop del vostro sistema operativo.

Pagina di download per Docker Desktop con le opzioni per i diversi sistemi operativi.
Pagina di download di Docker

Dopo la procedura di installazione, accedete alla finestra del terminale per verificare che il motore Docker sia pronto per l’esecuzione e inserite il seguente comando:

docker --version
Schermata di una riga del Terminal che controlla la versione installata di Docker
Versione di Docker installata

Poi digitate: docker-compose --version.

Schermata di una riga del Terminal che controlla la versione di Compose installate con Docker
Compose installato con Docker

Compose è uno strumento che consente di definire ed eseguire applicazioni Docker multi-container usando file YAML, che si usano per configurare i servizi delle applicazioni.

Potete eseguire un Redis dockerizzato per verificare che il motore Docker sia attivo e funzionante utilizzando il codice seguente. Questo esempio esegue l’immagine di Redis da Docker Hub e la nomina my-redis-container.

docker run --name my-redis-container -d redis
Eseguire l'immagine di Redis da Docker Hub denominata my-redis-container
Immagine Redis da Docker Hub denominata my-redis-container

Visto che non disponete dell’immagine in locale, Docker preleva l’immagine di Redis da Docker Hub.

Ora potete aprire Docker Desktop per confermare l’estrazione dell’immagine di Redis. Nella Bacheca, fate clic su Immagini nel pannello di sinistra.

Schermata di Docker Desktop da cui verificare che l'immagine di Redis sia attiva e funzionante
Docker Desktop

Ora potete creare una rete. Il driver Docker usa il bridge o i driver di rete integrati nell’overlay per creare una rete Docker. Potete anche installare e usare un driver di rete di terze parti.

La differenza è che le reti bridge sono isolate su una singola installazione di Docker Engine, mentre le reti overlay si estendono su più host Docker, ognuno dei quali esegue un motore.

Tipo:

docker network create -d bridge kinsta-demo-network
Schermata di Docker con le righe di codice per creare una nuova rete Docker con il driver bridge
Rete Docker con il driver bridge

Se non specificate alcun driver per impostazione predefinita, Docker usa il driver bridge per creare una nuova rete poiché crea automaticamente il driver bridge quando installate Docker Engine. Tuttavia, se eseguite un container Docker con il comando Docker run, questo non userà questa rete.

Ora che avete una rete, il passo successivo è l’installazione di Redis all’interno del container Docker. Per farlo, digitate: docker pull redis.

Schermata con il codice per prelevare l'immagine di Redis da Docker Hub
Prelevare l’immagine di Redis dall’Hub Docker

Per verificare che l’immagine di Redis sia installata correttamente, eseguite uno dei seguenti comandi:

docker images
docker image ls
Schermata con l’elenco delle immagini Docker disponibili nel terminale dell'utente
Immagini Docker disponibili nel terminale dell’utente

Successivamente, create e avviate il container Redis. Per farlo, eseguite il seguente comando:

docker run -it –name dev_kinsta_redis_container -d redis
Codice per creare ed eseguire il container Docker
Docker conatainer

Ora verificate che Redis sia in esecuzione nel container. Per farlo, digitate: docker ps.

Codice per verificare che Redis sia attivo e funzionante in un container
Verificare che Redis sia attivo e funzionante in un container

Ora che avete confermato che il vostro container Docker è attivo e funzionante, potete aggiungere il container alla rete. Digitate: docker network connect .

Codice per aggiungere un container Docker alla rete docker creata
Aggiungere un container Docker alla rete docker creata

Se tutto funziona come previsto, il passo successivo è verificare che il server Redis in esecuzione all’interno di Docker sia pronto ad accettare connessioni. Per farlo, usate docker logs.

Schermata del Docker container per verificare che l'immagine di Redis sia in esecuzione all'interno del container
Verificare che l’immagine di Redis sia in esecuzione all’interno del container Docker

Dopodiché dovete creare un database perché avete bisogno di un modo per connettervi al container Redis per eseguire i comandi sul server. Per farlo, digitate: docker exec -it bash. Potete usare il nome del container e l’ID del container in modo intercambiabile.

Collegamento all’istanza del container Redis
Collegati all’istanza del container Redis.

Nel container, usate la CLI per eseguire i comandi. Redis ha installato automaticamente gli host Docker. Per usare la Redis-CLI, digitate: redis-cli.

La CLI di Redis CLI per eseguire i comandi Redis
Usare la Redis-CLI per eseguire i comandi di Redis

Questo vi connette alla porta predefinita di Redis sull’host locale. Digitate: ping, e la risposta dovrebbe essere pong.

Codice per verificare se la connessione Redis è attiva
Verifica se la connessione a Redis è attiva e funzionante

Successivamente, selezionate un database all’interno del vostro server Redis digitando select. Sebbene il database predefinito sia 0, selezionate db 1.

Codice per selezionare un database Redis
Selezionare un particolare database Redis

Successivamente, inserite i dati nel database. Usate il comando Redis SET. Per farlo, digitate SET <key> <value>.

Per esempio:

SET mykey "Hello"

Per ottenere la stessa chiave, digitate:

get myKey
Codice per inserire e recuperare i dati da Redis
Inserire e recuperare dati da Redis

Per ottenere il valore della chiave, eseguite get. Questo restituisce il valore. Successivamente, monitorate il vostro database Redis digitando MONITOR.

Codice per monitorare il database Redis
Monitorare il database Redis

Infine, arrestate il server Redis uscendo dalla CLI. Digitate due volte exit per uscire dalla CLI e da Redis.

Codice per uscire dalla CLI di Redis
Uscire dalla CLI di Redis

Infine, interrompete l’esecuzione del container Redis digitando docker stop.

Codice per eseguire il comando e arrestare l'esecuzione del container Docker
Eseguire il comando per arrestare l’esecuzione del container Docker

Redis con DevKinsta

DevKinsta vi permette di collegare un sito WordPress a un database Redis. Con DevKinsta, il componente aggiuntivo Redis funziona perfettamente come una cache di oggetti per mantenere i dati attraverso diversi caricamenti di pagina. Ciò significa che utilizzando il componente aggiuntivo Redis, potete usare la cache per riutilizzare gli oggetti invece di interrogare costantemente il database MySQL.

Dopo aver scaricato e configurato DevKinsta, installate come dipendenza Docker Desktop, che viene utilizzato per creare file di ambiente locali all’interno di un container. Con questa configurazione, potete configurare il componente aggiuntivo Redis in Devkinsta.

Il componente aggiuntivo Redis per DevKinsta si può quindi usare come fonte secondaria, riducendo il carico sul database primario, aumentando i tempi di risposta e rendendo l’applicazione più veloce.

Questo si traduce in una maggiore gestione del carico e in un’efficiente scalabilità dell’applicazione. Date un’occhiata a questo articolo per utilizzare il plugin Redis con il vostro sito web.

Riepilogo

L’esecuzione di Redis all’interno di un container Docker presenta numerosi vantaggi. Offre un ambiente sandbox per le vostre applicazioni, per cui non dovrete più preoccuparvi della piattaforma su cui distribuire le vostre applicazioni. Inoltre, Docker offre facilità d’uso, flessibilità ed elevata affidabilità.

Per quanto riguarda la sicurezza, potete verificare e analizzare le vulnerabilità di sicurezza con Synk, uno strumento che fornisce visibilità sulla sicurezza delle immagini Docker. Per quanto riguarda la flessibilità, Docker funziona con la maggior parte dei sistemi operativi e delle applicazioni basate su Unix e Windows. Questa flessibilità implica che le applicazioni o i servizi dockerizzati o containerizzati funzionano sempre, indipendentemente dal sistema operativo.

È facile usare Docker e il componente aggiuntivo Redis con DevKinsta, che avvia un sito WordPress dockerizzato in locale all’avvio. Date un’occhiata a DevKinsta e al componente aggiuntivo Redis per sfruttare le potenzialità di Redis in 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.