Recherche sur le site Web

Comment déployer rapidement Redis en tant que conteneur Docker


Liens rapides

  • Commencer
  • Stockage des données
  • Configuration de votre serveur
  • Gestion de la sécurité Redis
  • Utilisation de votre installation Redis
  • Résumé

Redis est un magasin clé-valeur en mémoire qui peut enregistrer des structures de données abstraites avec des performances élevées. Le logiciel open source est généralement utilisé pour les fonctions de base de données, de messagerie et de mise en cache.

Docker est la principale boîte à outils pour empaqueter des applications dans des conteneurs. Il vous permet d'isoler les composants logiciels dans des environnements indépendants dotés de leur propre système de fichiers.

Dans ce guide, nous utiliserons Docker pour déployer rapidement Redis à l'aide de l'image officielle sur Docker Hub. Par rapport à une installation sans système d'exploitation, Docker permet une procédure de configuration plus simple et ne polluera pas votre hôte avec de nouveaux packages. Assurez-vous que vous disposez d'une installation Docker fonctionnelle sur votre hôte avant de continuer.

Commencer

L'image Redis inclut à la fois le composant serveur et la CLI officielle. Il est préconfiguré pour lancer le serveur avec des valeurs de configuration par défaut fonctionnelles lorsque vous démarrez un nouveau conteneur.

Des variantes de l'image sont disponibles pour couvrir différentes versions de Redis (5.0 et 6.0) et systèmes d'exploitation (Alpine et Debian). Parcourez la liste des balises pour trouver la meilleure option pour votre environnement.

Le déploiement le plus simple est le suivant :

docker run --name redis -d -p 6379:6379 redis:6.0

Cela démarre un nouveau conteneur appelé redis exécutant Redis 6.0. L'indicateur -d est utilisé pour se détacher du conteneur. Le serveur restera actif en arrière-plan jusqu'à ce que vous arrêtiez le conteneur avec docker stop redis.

Redis écoute sur le port 6379 par défaut. L'indicateur -p lie ce port à votre hôte. Vos applications pourront accéder à Redis sur localhost:6379. Attention, cela n'est pas sécurisé : si votre machine est exposée à Internet, n'importe qui peut accéder à vos données Redis !

Stockage des données

Redis prend en charge plusieurs mécanismes de persistance qui peuvent enregistrer votre base de données en mémoire sur le disque. Les données seront enregistrées dans le répertoire /data du conteneur. Les conteneurs Docker étant éphémères, vous devez monter un volume dans ce répertoire. Sinon, vos données seront perdues lorsque votre conteneur s'arrêtera.

docker run --name redis -d 
    -v redis-data:/data
    redis:6.0 --save 60 1

L'indicateur --save est transmis au serveur Redis. Il configure la stratégie de persistance à utiliser. Cet exemple écrit un instantané de votre base de données toutes les 60 secondes. L'opération est ignorée sauf si 1 une écriture dans la base de données s'est produite depuis le dernier instantané.

Un volume Docker appelé redis-data est créé par l'indicateur -v. Cela stockera vos données en dehors du conteneur afin qu'elles restent accessibles après le redémarrage. Le volume persistera jusqu'à ce qu'il soit supprimé en exécutant docker volumes rm redis-data.

Configuration de votre serveur

Le moyen le plus rapide d'ajouter des paramètres de configuration consiste à transmettre les arguments CLI au serveur Redis dans le cadre de votre commande docker run. Ceci est illustré par l'exemple --save ci-dessus. Tout ce qui suit le nom de l'image dans docker run sera transmis à la commande exécutée à l'intérieur du conteneur. Dans le cas de l'image Redis, cette commande est le serveur Redis.

L’utilisation des flags CLI devient vite répétitive. Vous pouvez obliger Redis à utiliser un fichier de configuration en passant un chemin comme premier argument du serveur. Ce fichier se trouve classiquement dans /usr/local/etc/redis/redis.conf. Utilisez un montage de liaison Docker pour obtenir un redis.conf de votre système de fichiers local monté dans le conteneur :

docker run --name redis -d 
    -v redis-data:/data
    -v ./redis-conf:/usr/local/etc/redis
    redis:6.0 /usr/local/etc/redis.conf

Placez un redis.conf dans redis-conf dans votre répertoire de travail. Docker montera ce chemin dans le conteneur, donnant à Redis l'accès au fichier spécifié dans la commande docker run.

Gestion de la sécurité Redis

Les images Redis Docker sont configurées pour exécuter Redis en mode non protégé par défaut. Cela facilite l'accès au serveur Redis depuis vos autres conteneurs Docker, en utilisant les réseaux Docker. Cependant, cela signifie également que tout ce qui peut atteindre votre conteneur aura un accès complet à vos données.

Le mode protégé est une fonctionnalité Redis qui répond uniquement aux requêtes non authentifiées émises à partir des adresses de bouclage de votre hôte telles que localhost. Vous pouvez l'activer en ajoutant protected-mode yes à votre redis.conf. Lorsqu'il est utilisé avec une installation Dockerisée, Redis ne sera accessible que dans son propre conteneur, ce qui n'est généralement pas idéal.

Vous pouvez plutôt configurer une authentification par mot de passe de base en ajoutant un requirepass example à votre redis.conf. Redis n'acceptera que les requêtes des clients qui présentent le mot de passe configuré. Redis 6 prend également en charge un contrôle d'accès plus complet qui vous permet de configurer plusieurs comptes d'utilisateurs avec des privilèges différents.

Pour utiliser l'authentification, suivez les instructions de la section précédente pour créer un fichier de configuration Redis et le monter dans votre conteneur. Si vous ne souhaitez pas définir de mot de passe, protégez votre installation en la joignant uniquement aux réseaux Docker nécessaires à votre application. Ne liez pas le port 6379 à votre hôte sans avoir préalablement configuré l'authentification.

Utilisation de votre installation Redis

Maintenant que Redis est entièrement configuré, vous pouvez y accéder depuis vos clients. Si vous vous connectez depuis votre hôte, vous pouvez utiliser l'adresse IP du conteneur Docker (visible en exécutant docker inspect redis, ajustée en fonction du nom de votre conteneur) et le port 6379.

Pour accéder à Redis depuis un autre conteneur Docker, il est préférable de joindre les deux conteneurs dans un réseau Docker :

docker network create redis
docker run --name redis --network redis -d redis:6.0
docker run --name api --network redis -d my-api:latest

Votre conteneur d'application pourra désormais atteindre Redis via le port 6379 sur le nom d'hôte redis. Docker rend les noms de conteneurs accessibles en tant que noms d'hôte lorsqu'ils partagent un réseau Docker.

Vous pouvez interagir manuellement avec votre base de données à l'aide du binaire redis-cli inclus dans l'image du conteneur. Démarrez votre conteneur en mode détaché (-d) pour qu'il s'exécute en arrière-plan. Utilisez ensuite docker exec pour exécuter la commande redis-cli :

docker exec -it redis-container redis-cli

Cela vous amènera dans une session Redis CLI dans votre conteneur.

Résumé

Docker permet de démarrer rapidement et facilement une nouvelle instance Redis sans installer le logiciel sur votre machine. Utilisez l'image Docker officielle pour démarrer votre conteneur, puis ajoutez des indicateurs de commande ou montez un fichier de configuration en fonction de vos besoins.

Deux choses à toujours garder à l'esprit sont le stockage et la sécurité : si vous devez utiliser les fonctionnalités de persistance de Redis, vous devez utiliser un volume Docker pour éviter de perdre vos données. N'oubliez pas que Dockerized Redis est par défaut en mode non protégé sans authentification, donc exposer le port 6379 pourrait avoir des conséquences désastreuses dans le pire des cas.

Articles connexes: