gpt4 book ai didi

docker - netcat不在docker内部返回

转载 作者:行者123 更新时间:2023-12-02 18:12:17 25 4
gpt4 key购买 nike

一个简单的场景:一个普通的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容器中。

最佳答案

您可以使用-q标志在Edin上的EOF之后N秒钟退出nc

相比:

echo PING | nc redis 6379

带有:
echo PING | nc -q0 redis 6379

带有:
echo PING | nc -q1 redis 6379

在我的环境中,第一个如您所描述的那样挂起,第二个在它收到来自服务器的响应之前退出,而第三个向我展示了来自redis的 +PONG响应。

这显然是不理想的,因为您可能事先不知道Redis需要多长时间才能做出响应,因此您可能需要花一点时间来玩,然后再动手指。

我注意到NMAP版本的netcat( ncathttps://nmap.org/ncat/)似乎表现得更为“理智”:
[root@dc12870502f9 /]# echo PING | ncat redis 6379
+PONG

关于docker - netcat不在docker内部返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com