Mac上的Docker:如何在容器中测试listen端口

时间:2016-10-21 07:24:47

标签: macos docker port forwarding

我最近在Mac上安装了Docker native,从docker-machine切换。我有一个带Zookeeper的容器,它在2181上打开一个端口。但是这个过程可能需要大约10-15秒。

以前使用docker-machine我用来检查Zookeeper是否已经开始使用netcat监听端口了:

nc -z 192.168.99.100 2181

当Zookeeper启动时,Netcat返回非零退出代码,一旦完成,连接成功,netcat返回零。

但是在Docker Mac-native中,当容器存在时,连接总是成功,但在Zookeeper启动期间,它会立即断开连接。当Zookeeper准备就绪时,它会保持连接打开。 Netcat没有看到这种差异和" nc -z"总是返回零。

所以我的问题是:是否有一种简单的方法可以从容器外部检查Zookeeper是否实际上已经开始监听端口?

1 个答案:

答案 0 :(得分:0)

如果你只是想检查想要手动检查,你可以使用telnet。

命令:

telnet localhost 80

输出:

Trying ::1...
Connected to localhost.
Escape character is '^]'.

这意味着连接成功。命令用法:

telnet <address> <port>

请注意,您只能将telnet用于TCP端口。

另一种方法是使用docker exec来检查容器中的服务:

docker exec <container name> "echo stat | nc <zookeeper ip> 2181"
docker exec <container name> "bash path/to/zkServer.sh status"