简单方案:一个正常的docker容器链接到redis,其中已安装的卷包含appendonly.aof
文件以填充redis。:
docker run --rm -it --link redis:redis -v `pwd`:/data ubuntu:16.04 bash
我想使用netcat
来填充redis(我在附加到容器后安装netcat
):
cat data/appendonly.aof | nc redis 6379
我从redis服务器获取+OK
,但是nc不会退出并挂起。这在普通的Linux / Unix环境下运行没有问题,我似乎也没有找到它为什么卡在docker容器中。
答案 0 :(得分:3)
您可以使用-q
标记在stdin上的EOF之后让nc
退出 N 秒。
比较
echo PING | nc redis 6379
使用:
echo PING | nc -q0 redis 6379
使用:
echo PING | nc -q1 redis 6379
在我的环境中,第一个在您描述时挂起,第二个在之前退出它从服务器获得响应,第三个向我显示redis的+PONG
响应。
这显然不太理想,因为你可能事先不知道redis需要多长时间才能做出响应,所以你可能需要稍微玩一下定时然后交叉。
我注意到netcat(ncat
,https://nmap.org/ncat/)的NMAP版本似乎以更加理智的方式“开箱即用”:
[root@dc12870502f9 /]# echo PING | ncat redis 6379
+PONG