How to get docker stats detail in java code?

丶灬走出姿态 提交于 2020-01-17 08:01:09

问题


I try to get docker container details on my java code and successfully can get it. But I need to get the CPU & memory usage of Docker container. In the terminal itself, we can check the status with docker stats . But my question is how to get the stats of Docker container in java code?


回答1:


Docker CLI to make calls to Docker API.

Also you can use a Java API client availible on GitHub.




回答2:


A bit late for answering but it may help somebody.

Considering you are running Docker engine on your host, you can make RESTful calls to Docker API endpoints to get various responses, see list of Docker API endpoints here.

Now to get memory and CPU usage (and much more) of a specific container you can call http://localhost:2375/containers/some-containerId/stats?stream=0 API endpoint.

Go access this link on a browser and see the response, for Java see below -

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;
    }
}

Note - stream=false query parameter will pull stats once then disconnect. Default is true. If you choose stream=true you'll get a continuous stream of statistics.

Here I'm getting statistics as a String, you can also get it as a HashMap.

The output of the above method will be similar to what you would get if you fired this link on the browser http://localhost:2375/containers/some-containerId/stats?stream=0

Hope this helps!



来源:https://stackoverflow.com/questions/45230004/how-to-get-docker-stats-detail-in-java-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!