以编程方式查找docker容器IP /端口

我需要找出(以编程方式)在Docker中部署的特定应用程序的容器IP和端口。 该应用程序可以运行在多个节点,并扩大规模。

有没有使用Docker API找出容器ips和端口的方法?

使用Docker SDK。 只要select语言…;)

https://docs.docker.com/engine/api/sdks/

Docker API为所有操作提供HTTP端点,因此可以在大多数语言中轻松进行pipe理。

一个简单的例子是在命令行中使用curljq

您可以列出所有容器端口

 $ curl -s --unix-socket /var/run/docker.sock \ http:/v1.26/containers/json \ | jq '.[] | .Id, .Ports' "b8249afa78bcc8027a38048384c7656a305a3c8d5a517d52df5a299223d8064d" [ { "IP": "0.0.0.0", "PrivatePort": 3142, "PublicPort": 3142, "Type": "tcp" } ] "49125f8274242a5ae244ffbca121f354c620355186875617d43876bcde619732" [ { "IP": "0.0.0.0", "PrivatePort": 4873, "PublicPort": 4873, "Type": "tcp" } ] 

检索特定容器的端口映射定义的列表

 $ curl -s --unix-socket /var/run/docker.sock \ http:/v1.26/containers/49125f8274242a5ae244ffbca121f354c620355186875617d43876bcde619732/json \ | jq '.NetworkSettings | .Ports | keys' [ "4873/tcp" ]