Проблемът е във вашето обвързване. Трябва да зададете следното:
bind 0.0.0.0
Това ще зададе redis
да се обвърже с всички налични интерфейси, в контейнерна среда с един интерфейс, (eth0
) и обратна линия (lo
) redis ще се свърже и с двете по-горе. Трябва да помислите за добавяне на мерки за сигурност чрез други директиви в config file
или като използвате външни инструменти като firewalls
. защото с този подход всеки може да се свърже с вашия redis
сървър.
Настройката по подразбиране е bind 127.0.0.1
и тази настройка ще причини redis
да слушате само на интерфейса за обратна връзка и ще бъде достъпен само от вътрешността на контейнера. (за сигурност)
За да стартирате redis с персонализиран конфигурационен файл:
sudo docker run -d --name redis-test -p 6379:6379 -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf
Сега да проверите на хоста на docker с redis-tools
инсталирано:
redis-cli
127.0.0.1:6379>
127.0.0.1:6379> set farhad likes:stackoverflow
OK
127.0.0.1:6379> get farhad
"likes:stackoverflow"
127.0.0.1:6379>
Можете също да се свържете с вашия redis
контейнер от външен хост чрез:
redis-cli -h 'IP-address-of-dockerhost-running-redis-container'