如何在java代码中获取docker统计信息的详细信息?
我尝试获取java代码中docker容器的详细信息,并成功地获得了它。但是我需要得到Docker容器的CPU和内存使用情况。 在终端本身中,我们可以使用docker stats检查状态。如何在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 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
希望这有帮助 ??