我有一个Redis Service在docker容器中运行,但连接到它时不返回游标。
当使用redis-cli时,终端只是因为发出命令而挂起,我希望有人可以指出我要去哪里。
而不是看到常规的redis-cli输出,如:
% redis-cli
redis 127.0.0.1:6379> set docker awesome
OK
redis 127.0.0.1:6379> get docker
"awesome"
redis 127.0.0.1:6379>
这就是我所看到的:
% redis-cli -p 49156
redis 127.0.0.1:49156> set docker awesome
没有“确定”,终端只是挂起,直到我按Ctrl-C为止。
我正在按照http://docs.docker.io/en/latest/examples/running_redis_service/的docker.io指示进行操作
这是我的Dockerfile:
FROM ubuntu:12.10
RUN apt-get update
RUN apt-get -y install redis-server
EXPOSE 6379
ENTRYPOINT ["/usr/bin/redis-server"]
我用以下方法构建图像:
sudo docker build -t rudijs/redis .
我使用以下命令运行图像实例:
sudo docker run -d -p 6379 -name redis rudijs/redis
% sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3888fa49b605 rudijs/redis:latest /usr/bin/redis-serve 5 seconds ago Up 4 seconds 0.0.0.0:49156->6379/tcp redis
裸露的容器redis端口位于:
% sudo docker port redis 6379
0.0.0.0:49156
% redis-cli -p 49156
redis 127.0.0.1:49156> set docker awesome
我尝试过修改从容器到主机的不同端口绑定(bind),但结果始终相同-cli hang。
发出“帮助”之类的命令似乎可以正常工作
% redis-cli -p 49156
redis 127.0.0.1:49156> help
redis-cli 2.2.12
Type: "help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit
redis 127.0.0.1:49156>
如果我坐下来,我会超时:
% redis-cli -p 49156
redis 127.0.0.1:49156> set docker awesome
Error: Connection reset by peer
(248.52s)
redis 127.0.0.1:49156>
对此问题的任何建议或技巧,我们深表感谢。
谢谢!
最佳答案
解决此问题的方法是需要Firehol(iptables)规则:
interface docker0 interface1 src "172.17.0.0/16" dst 172.17.42.1
server all accept
client all accept
关于redis - Docker Redis CLI超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21225390/