How to get docker stats detail in java code?

前端 未结 2 1442
名媛妹妹
名媛妹妹 2021-01-28 15:05

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

相关标签:
2条回答
  • 2021-01-28 15:34

    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!

    0 讨论(0)
  • 2021-01-28 15:40

    Docker CLI to make calls to Docker API.

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

    0 讨论(0)
提交回复
热议问题