Docker Redis CLI超时

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

在使用redis-cli时,terminal只是发出命令而挂起,我希望有人能指出我要出错的地方。

而不是像下面这样看到普通的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 

没有“确定”,terminal挂起,直到我按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"] 

我用以下方式构build图像:

 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> 

任何意见或提示与这个问题非常赞赏。

谢谢!

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

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