Когато свързвате портове като този '9002:6379'
казвате на Docker да препраща трафик от localhost:9002
-> redis:6379
. Ето защо това работи от вашата хост машина:
redis-cli -h localhost -p 9002 -n 0
Въпреки това, когато контейнерите говорят помежду си, всички те са свързани към една и съща мрежа по подразбиране (мостът Docker или docker0
). По подразбиране контейнерите могат да комуникират помежду си свободно в тази мрежа, без да има нужда от отваряне на портове. В рамките на тази мрежа вашият redis
контейнерът прослушва трафик на обичайния си порт (6379
), хостът изобщо не участва. Ето защо комуникацията между контейнери работи на 6379
.