我在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>
对此问题的任何建议或提示都非常感谢。
谢谢!
答案 0 :(得分:0)
对此的修复是需要Firehol(iptables)规则:
interface docker0 interface1 src "172.17.0.0/16" dst 172.17.42.1
server all accept
client all accept