我看到很多人都在为此苦苦挣扎,有点觉得redis容器图像中可能存在错误,而其他人似乎正在追逐类似的问题.
我正在使用DockerHub上的标准redis映像.(https://github.com/dockerfile/redis)
像这样运行它:
docker run -it -p 6379:6379 redis bash
Run Code Online (Sandbox Code Playgroud)
一旦我进入,我就可以启动服务器,并从容器映像执行redis ping.
不幸的是,我无法从我的主机连接到redis容器.
我试过设置,如下所示.
bind 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
并从配置中删除绑定
并尝试关闭保护模式
protected-mode no
Run Code Online (Sandbox Code Playgroud)
我知道它正在读取配置文件,因为我改变了端口只是为了测试,我能够做到这一点.
我正在运行Windows 10,所以可能是Windows网络问题.我通常不会遇到码头工人的问题.我很困惑
Bri*_*mpo 35
这是设置 Redis 容器的更简单方法。
docker run -d --name some-redis -p 6379:6379 redis
Run Code Online (Sandbox Code Playgroud)
如果您没有图像,此命令将拉取它。然后,如果您需要从redis-cli访问控制台,可以使用:
docker exec -it some-redis bash
Run Code Online (Sandbox Code Playgroud)
进入容器控制台,并在控制台中输入:
root@72c388dc2cb8:/data# redis-cli
Run Code Online (Sandbox Code Playgroud)
输出:
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)
这对于我的用例来说已经足够了(简单快速的本地开发)。
Far*_*ahi 24
问题出在你的绑定上,你应该设置以下内容:
bind 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
这将设置redis
为绑定到所有可用的接口,在具有一个接口的容器化环境中,(eth0
)和loopback(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
Run Code Online (Sandbox Code Playgroud)
现在验证redis-tools
已安装的docker主机:
sudo 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>
Run Code Online (Sandbox Code Playgroud)
您还可以redis
通过以下方式从外部主机连接到您的容器:
redis-cli -h 'IP-address-of-dockerhost-running-redis-container'
Run Code Online (Sandbox Code Playgroud)
现在使用版本4.0.9
( Docker Toolbox on Win10
)可能会更容易。只需连接一个 redis 客户端,然后:
set bind 0.0.0.0
save
Run Code Online (Sandbox Code Playgroud)
新设置在停止/启动后保持不变。
小智 5
这里有一些说明可以使这项工作正常进行。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
systemctl enable docker ; systemctl start docker; systemctl status docker
Run Code Online (Sandbox Code Playgroud)
请参阅使用便利脚本安装
mkdir -p /etc/redis/
chown -R 1000:1000 /etc/redis
sudo docker run -d --name redis -p 6379:6379 --restart unless-stopped -v /etc/redis/:/data redis redis-server /data
Run Code Online (Sandbox Code Playgroud)
注意:对您的解决方案至关重要的重要部分是将端口公开 (-p 6379:6379) 到您的 docker 主机并路由到容器端口。请参阅Redis Docker 文档
归档时间: |
|
查看次数: |
35173 次 |
最近记录: |