2 votes

Redis docker, ne peut pas se connecter à redis-cli

J'essaie d'exécuter redis avec un stockage de persistance. J'ai suivi les instructions officielles de Docker page de l'installation de redis fo.

J'ai tiré l'image en utilisant -

docker pull redis

J'ai démarré redis avec le stockage de persistance en utilisant -

docker run --name some-redis -d redis redis-server --appendonly yes

Et j'essaie de me connecter à l'instance de redis avec redis cli avec -.

docker run -it --network some-network --rm redis redis-cli -h some-redis

Il me donne l'erreur suivante -

docker : Réponse d'erreur du démon : réseau some-network non trouvé.

Je suis la documentation jusqu'au bout, pourquoi cela ne fonctionne-t-il pas ?

2voto

davidh Points 107

Les deux réponses donnent des informations intéressantes mais il leur manque l'essentiel.
Dans Docker, les conteneurs peuvent se connecter à certains réseaux.
Par défaut, si vous ne spécifiez aucun réseau lorsque vous lancez un conteneur, celui-ci utilisera le réseau pont par défaut : à l'intérieur de ce réseau, tous les conteneurs peuvent communiquer entre eux, mais uniquement via leur adresse IP.

1) Avec le réseau de pontage par défaut

Vous ne pouvez pas communiquer entre les conteneurs de ce réseau via le nom du conteneur.
Alors ici docker run -it --network some-network --rm redis redis-cli -h some-redis le some-redis n'est pas un nom d'hôte résoluble.

Pour surmonter cela, vous devez référencer le conteneur par son adresse IP.
Inspectez le conteneur pour savoir si :

docker container inspect some-redis | grep -i ipaddress

Vous devriez obtenir quelque chose comme : "IPAddress": "172.17...."

Maintenant, spécifiez l'adresse IP comme paramètre -h et tout devrait bien se passer :

docker run -it --network some-network --rm redis redis-cli -h 172.17...

Ce n'est vraiment pas un moyen net/réutilisable/portable de faire communiquer deux conteneurs entre eux. C'est plus approprié pour expérimenter des choses.

2) Avec un réseau de pontage personnalisé

Vous pouvez communiquer entre les conteneurs de ce réseau via le nom du conteneur.

Créez votre réseau :

docker network create redis-network

Exécutez le serveur redis et connectez-le à ce réseau :

docker run --name some-redis -d --network redis-server redis redis-server --appendonly yes

Exécutez le client redis et connectez-le à ce réseau :

docker run -it --rm --network redis-network redis redis-cli -h some-redis

Maintenant, le client peut se connecter à l'instance du serveur via -h some-redis .

1voto

Rene M. Points 2238

Créez d'abord le réseau

docker network create some-network

puis l'utiliser dans tous vos conteneurs qui doivent utiliser le réseau.

docker run --network some-network

Lorsque vous avez terminé, supprimez le réseau.

docker network rm some-network

1voto

wusheng Points 39

Tout d'abord, vous devez exécuter cette commande en tant que redis-server.

docker run --name some-redis -d redis redis-server --appendonly yes

Ensuite, vous devez exécuter redis-cli pour connecter le serveur redis. il faut attacher le conteneur redis-server et lancer redis-cli

docker exec -it some-redis redis-cli -h

Bien sûr, si vous voulez accéder par le réseau comme une page redis, vous devez attacher le réseau du conteneur du client au conteneur redis-server pour partager le réseau.

docker run --rm -it --net=container:some-redis  redis redis-cli -h

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X