1

我正在使用 docker-java API 在我的项目中执行 docker API。我没有找到任何合适的方法列出 docker CPU 内存使用情况

借助 docker-java API 获取 /v1.24/containers/redis1/stats HTTP/1.1

依赖

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

代码

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

我没有得到任何输出

告诉我如何使用 docker-java api 执行 docker stats

4

2 回答 2

2

这对我有用

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
}
于 2019-07-18T08:12:45.680 回答
0

DockerClient 是我们可以在 Docker 引擎/守护进程和我们的应用程序之间建立连接的地方。

默认情况下,只能通过 unix:///var/run/docker.sock 文件访问 Docker 守护进程。除非另有配置,否则我们可以在本地与侦听 Unix 套接字的 Docker 引擎进行通信。

我们可以分两步打开连接:

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

由于引擎可以依赖其他特性,因此客户端也可以根据不同的条件进行配置。

例如,构建器接受服务器 URL,也就是说,如果引擎在端口 2375 上可用,我们可以更新连接值:

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

请注意,我们需要根据连接类型在连接字符串前面加上 unix:// 或 tcp://。

于 2019-06-24T05:56:35.660 回答