Je vois beaucoup de gens qui luttent avec cela, j'ai l'impression qu'il y a peut-être un bug dans l'image de Redis Container, et que d'autres semblent s'attaquer à un problème similaire.
J'utilise l'image redis standard sur DockerHub. ( https://github.com/dockerfile/redis )
ça marche comme ça:
docker run -it -p 6379:6379 redis bash
Une fois que je suis entré, je peux démarrer le serveur et effectuer un ping redis à partir de l'image du conteneur.
Malheureusement, je ne peux pas me connecter au conteneur redis à partir de mon hôte.
J'ai essayé de mettre en place, comme ci-dessous.
bind 127.0.0.1
et enlevé le lien de la configuration
et essayé d'éteindre le mode protégé
protected-mode no
Je sais que c'est en train de lire le fichier de configuration, car j'ai changé de port juste pour tester, et j'ai été capable de le faire.
J'utilise Windows 10, alors c'est peut-être un problème de réseau Windows. Je n'ai jamais un problème avec docker normalement. Je suis perplexe
Le problème vient de votre liaison, vous devez définir les éléments suivants:
bind 0.0.0.0
Ceci va définir redis
pour se lier à toutes les interfaces disponibles, dans un environnement conteneurisé avec une interface (eth0
) et une boucle (lo
). Redis va lier les deux éléments ci-dessus. Vous devriez envisager d'ajouter des mesures de sécurité via d'autres directives dans config file
ou d'utiliser des outils externes tels que firewalls
. car avec cette approche, tout le monde peut se connecter à votre serveur redis
.
Le paramètre par défaut est bind 127.0.0.1
et ce paramètre fera que redis
n'écoutera que sur l'interface de bouclage et qu'il ne sera accessible que depuis l'intérieur du conteneur. (pour la sécurité)
Pour exécuter redis avec un fichier de configuration personnalisé:
Sudo docker run -d --name redis-test -p 6379:6379 -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf
Maintenant, pour vérifier sur l'hôte de docker avec redis-tools
installé:
Sudo redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set farhad likes:stackoverflow
OK
127.0.0.1:6379> get farhad
"likes:stackoverflow"
127.0.0.1:6379>
Vous pouvez également vous connecter à votre conteneur redis
à partir d'un hôte externe via:
redis-cli -h 'IP-address-of-dockerhost-running-redis-container'
Voici quelques instructions pour que cela fonctionne correctement.
curl -fsSL https://get.docker.com -o get-docker.sh
Sudo sh get-docker.sh
systemctl enable docker ; systemctl start docker; systemctl status docker
Reportez-vous à Installation à l'aide du script pratique
mkdir -p /etc/redis/
chown -R 1000:1000 /etc/redis
Sudo docker run -d --name redis -p 6379:6379 --restart unless-stopped -v /etc/redis/:/data redis redis-server /data
REMARQUE: L'important dans votre solution consiste à exposer le port (-p 6379: 6379) à votre hôte docker et à l'acheminer au port du conteneur . Reportez-vous à la section Documentation Redis Docker
Cela pourrait être plus facile maintenant avec la version 4.0.9
(Docker Toolbox on Win10
). Connectez-vous simplement avec un client Redis, puis:
set bind 0.0.0.0
save
Le nouveau réglage s'en tient après l'arrêt/le démarrage.