以编程方式查找docker container ip / port

时间:2017-03-09 20:16:47

标签: docker

我需要找到(以编程方式)容器ip&我在Docker中部署的特定应用程序的端口。该应用程序可以在多个节点中运行并按比例放大。

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

2 个答案:

答案 0 :(得分:1)

Docker API为所有操作提供HTTP端点,因此可以在大多数languages中轻松管理。

一个简单的例子是在命令行上使用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"
]

答案 1 :(得分:0)

使用Docker SDK。只需选择语言......;)

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