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'