Problemet är med din bindning. Du bör ställa in följande:
bind 0.0.0.0
Detta kommer att ställa in redis
att binda till alla tillgängliga gränssnitt, i en containermiljö med ett gränssnitt, (eth0
) och en loopback (lo
) redis kommer att binda till båda ovanstående. Du bör överväga att lägga till säkerhetsåtgärder via andra direktiv i config file
eller använda externa verktyg som firewalls
. eftersom med detta tillvägagångssätt kan alla ansluta till din redis
server.
Standardinställningen är bind 127.0.0.1
och den här inställningen kommer att orsaka redis
att bara lyssna på loopback-gränssnittet, och det kommer endast att vara tillgängligt från insidan av behållaren. (för säkerhets skull)
Så här kör du redis med anpassad konfigurationsfil:
sudo docker run -d --name redis-test -p 6379:6379 -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf
Nu ska du verifiera på docker-värden med redis-tools
installerat:
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>
Du kan också ansluta till din redis
behållare från en extern värd via:
redis-cli -h 'IP-address-of-dockerhost-running-redis-container'