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
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 istrue
. If you choosestream=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!
Docker CLI to make calls to Docker API.
Also you can use a Java API client availible on GitHub.