Quando você vincula portas como esta
'9002:6379'
você está dizendo ao Docker para encaminhar o tráfego de localhost:9002
-> redis:6379
. É por isso que isso funciona em sua máquina host:redis-cli -h localhost -p 9002 -n 0
No entanto, quando os contêineres conversam entre si, eles estão todos conectados à mesma rede por padrão (a ponte Docker ou
docker0
). Por padrão, os contêineres podem se comunicar livremente nesta rede, sem precisar abrir nenhuma porta. Dentro desta rede, seu redis
container está escutando o tráfego em sua porta usual (6379
), o host não está envolvido. É por isso que sua comunicação de contêiner para contêiner funciona em 6379
.