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
.