我有一个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/

10-13 08:06
查看更多