我看到很多人都在为此苦苦挣扎,好像在redis容器映像中可能有一个错误,而其他人似乎在追寻类似的问题。
我在DockerHub上使用标准Redis映像。(https://github.com/dockerfile/redis)
像这样运行它:
docker run -it -p 6379:6379 redis bash
进入服务器后,就可以启动服务器,并从容器映像进行Redis ping了。
不幸的是,我无法从主机连接到Redis容器。
我已经尝试设置,例如下面。
bind 127.0.0.1
并从配置中删除了绑定
并尝试关闭保护模式
protected-mode no
我知道它正在读取配置文件,因为我只是为了测试而更改了端口,所以我能够做到这一点。
我正在运行Windows 10,因此可能是Windows网络问题。我从来没有正常与码头工人的问题。我很困惑
问题出在您的绑定上,您应该设置以下内容:
bind 0.0.0.0
这将设置redis为绑定到所有可用接口,在具有一个接口的容器化环境中,(eth0)和回送(lo)redis将绑定到上述两个接口。您应该考虑通过中的其他指令config file或使用外部工具(例如)添加安全措施firewalls。因为使用这种方法,每个人都可以连接到您的redis服务器。
redis
eth0
lo
config file
firewalls
默认设置为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
现在在redis-tools已安装的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'