如何添加docker运行状况检查以testingTCP端口是否打开?

我有一个服务器端口9083上运行的Apache蜂巢服务。事情是它不支持http协议(但使用thrift协议)。所以我不能简单地添加

 HEALTHCHECK CMD http://127.0.0.1:9083 || exit 1 # this check fails 

我想要的只是检查该端口是否打开。 我有netstatcurl在服务器上,但不是nc

到目前为止,我尝试了下面的选项,但没有一个适合作为健康检查。

 netstat -an | grep 9083 | grep LISTEN | echo $? # This works netstat -an | grep 9084 | grep LISTEN | echo $? # but so does this 

正如我从上面解释的问题是它只是告诉我,我的语法是正确的,但不是真的testing,如果该端口真的听

因为当我做netstat -an我得到以下输出,这清楚地显示只有9083听,而不是9084

 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:9083 0.0.0.0:* LISTEN tcp 0 0 

你可以使用/dev/tcp

喜欢这个 :

printf "GET / HTTP/1.1\n\n" > /dev/tcp/127.0.0.1/9083

有关更多信息,可以查看: http : //www.tldp.org/LDP/abs/html/devref1.html#DEVTCP