Kiedy powiążesz porty takie jak ten '9002:6379' każesz Dockerowi przekazywać ruch z localhost:9002 -> redis:6379 . Dlatego działa to z komputera hosta:
redis-cli -h localhost -p 9002 -n 0
Jednak gdy kontenery komunikują się ze sobą, wszystkie są domyślnie połączone z tą samą siecią (mostek Docker lub docker0 ). Domyślnie kontenery mogą komunikować się ze sobą swobodnie w tej sieci, bez konieczności otwierania jakichkolwiek portów. W tej sieci Twój redis kontener nasłuchuje ruchu na swoim zwykłym porcie (6379 ), host w ogóle nie jest zaangażowany. Dlatego komunikacja między kontenerami działa na 6379 .