如何在java代码中获取docker统计信息的详细信息?

如何在java代码中获取docker统计信息的详细信息?,java,docker,memory,containers,cpu-usage,Java,Docker,Memory,Containers,Cpu Usage,我尝试获取java代码中docker容器的详细信息,并成功地获得了它。但是我需要得到Docker容器的CPU和内存使用情况。 在终端本身中,我们可以使用docker stats检查状态。 但我的问题是如何在java代码中获取Docker容器的统计信息?Docker CLI来调用 您还可以使用上可用的Java API客户端。回答有点晚,但它可能会帮助某些人 考虑到您正在主机上运行Docker引擎,您可以对Docker API端点进行RESTful调用以获得各种响应,请参阅列表 现在,要获取特定容器

我尝试获取java代码中docker容器的详细信息,并成功地获得了它。但是我需要得到Docker容器的CPU和内存使用情况。 在终端本身中,我们可以使用docker stats检查状态。
但我的问题是如何在java代码中获取Docker容器的统计信息?

Docker CLI来调用


您还可以使用上可用的Java API客户端。

回答有点晚,但它可能会帮助某些人

考虑到您正在主机上运行Docker引擎,您可以对Docker API端点进行RESTful调用以获得各种响应,请参阅列表

现在,要获取特定容器的内存和CPU使用率(以及更多),可以调用
http://localhost:2375/containers/some-containerId/stats?stream=0
API端点

在浏览器上访问此链接并查看响应,对于Java,请参见下文-

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.client.RestTemplate;

@RestController
public class DockerController {
    @GetMapping("/getStats/{containerId}")
    public String getStats(@PathVariable String containerId){
        String statistics = null;
        RestTemplate restTemplate =  new RestTemplate();
        statistics = restTemplate.getForObject("http://localhost:2375/containers/"+containerId+"/stats?stream=0", String.class);
        if(statistics != null){
            System.out.println("Container statistics - \n" + statistics);
        }
        return statistics;
    }
}
注意-
stream=false
query参数将提取统计信息一次,然后断开连接。默认值为
true
。如果选择
stream=true
,您将获得连续的统计数据流

这里我以
字符串
的形式获取统计信息,您也可以以
哈希映射
的形式获取统计信息

上述方法的输出将与您在浏览器上启动此链接时得到的结果类似
http://localhost:2375/containers/some-集装箱ID/stats?数据流=0

希望这有帮助

??