UDIT JOSHI
UDIT JOSHI

Reputation: 1378

How to find CPU MEMORY usage with docker stats command?

I am using docker-java API to execute docker API in my project. I didn't find any suitable method which lists down docker CPU memory usage as

GET /v1.24/containers/redis1/stats HTTP/1.1 with the help of docker-java API

Dependency

compile group: 'com.github.docker-java', name: 'docker-java', version: '3.1.2'

Code

public static void execute() {
        DockerClient dockerClient = DockerClientBuilder.getInstance().build();
        dockerClient.statsCmd("containerName");  
    }

I didn't get any output

Tell me how to execute docker stats with docker-java api

Upvotes: 1

Views: 951

Answers (2)

UDIT JOSHI
UDIT JOSHI

Reputation: 1378

This works for me

public Statistics getNextStatistics() throws ProfilingException {
    AsyncResultCallback<Statistics> callback = new AsyncResultCallback<>();
    client.statsCmd(containerId).exec(callback);
    Statistics stats;
    try {
        stats = callback.awaitResult();
        callback.close();
    } catch (RuntimeException | IOException e) {
        // you may want to throw an exception here
    }
    return stats; // this may be null or invalid if the container has terminated
}

Upvotes: 2

govind agrawal
govind agrawal

Reputation: 21

DockerClient is where we can establish a connection between a Docker engine/daemon and our application.

By default, the Docker daemon can only be accessible at the unix:///var/run/docker.sock file. We can locally communicate with the Docker engine listening on the Unix socket unless otherwise configured.

we can open a connection in two steps:

    DefaultDockerClientConfig.Builder config 
  = DefaultDockerClientConfig.createDefaultConfigBuilder();
DockerClient dockerClient = DockerClientBuilder
  .getInstance(config)
  .build();

Since engines could rely on other characteristics, the client is also configurable with different conditions.

For example, the builder accepts a server URL, that is, we can update the connection value if the engine is available on port 2375:

DockerClient dockerClient
  = DockerClientBuilder.getInstance("tcp://docker.baeldung.com:2375").build();

Note that we need to prepend the connection string with unix:// or tcp:// depending on the connection type.

Upvotes: 0

Related Questions