Docker Redis CLI超时

时间:2014-01-20 02:34:34

标签: redis docker

我在Docker容器中运行了一个Redis服务,但是当连接到它时,不会返回游标。

当使用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

没有“OK”,终端只会挂起,直到我按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

我尝试过从容器到主机的不同端口绑定,但结果总是一样的 - cli挂起。

发出像“帮助”这样的命令似乎工作正常

% 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> 

对此问题的任何建议或提示都非常感谢。

谢谢!

1 个答案:

答案 0 :(得分:0)

对此的修复是需要Firehol(iptables)规则:

interface docker0 interface1 src "172.17.0.0/16" dst 172.17.42.1
    server all accept
    client all accept