// Required library: com.github.docker-java:docker-java
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.model.Statistics;
import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.core.InvocationBuilder;
public class GetCPUUsage {
public static void main(String[] args) throws InterruptedException {
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
InspectContainerResponse container = dockerClient.inspectContainerCmd("container_name").exec();
InvocationBuilder.AsyncResultCallback<Statistics> callback = new InvocationBuilder.AsyncResultCallback<>();
dockerClient.statsCmd(container.getId()).exec(callback);
Statistics stats = callback.awaitResult();
long cpuDelta = (stats.getCpuStats().getCpuUsage() != null ? stats.getCpuStats().getCpuUsage().getTotalUsage() : 0) -
(stats.getPreCpuStats() != null && stats.getPreCpuStats().getCpuUsage() != null ? stats.getPreCpuStats().getCpuUsage().getTotalUsage() : 0);
long systemDelta = (stats.getCpuStats().getSystemCpuUsage() != null ? stats.getCpuStats().getSystemCpuUsage() : 0) -
(stats.getPreCpuStats() != null ? stats.getPreCpuStats().getSystemCpuUsage() : 0);
long numberOfCores = (stats.getCpuStats().getOnlineCpus() != null ? stats.getCpuStats().getOnlineCpus() : 0);
double cpuPercent = ((double) cpuDelta / systemDelta) * numberOfCores * 100;
System.out.println(cpuPercent);
}
}
Der Code für, Wie man die CPU Nutzung eines Docker Container ermittelt in Java mit der Docker-API, kratzt aber nur an der Oberfläche der Docker-API. Die Docker-API bietet eine breite Palette an Funktionen, die mit dem hier Gelernten kombiniert werden kann, um robuste Automatisierungen zu entwickeln und deine gesamten Arbeitsabläufe erheblich zu verbessern. Ob es um die Verwaltung von Containern, Images, Netzwerken oder anderen Docker-Ressourcen geht, die Docker-API ist das Werkzeug dafür.
Die Docker-API kann aber in anderen Sprachen als Java genutzt werden. Sie ist mit vielen verschiedenen Programmiersprachen kompatibel und kann somit in vielen unterschiedlichen Bereichen eingesetzt werden. Dadurch bietet die Docker-API Entwicklern auch die Flexibilität, in einer Sprache zu arbeiten, in der sie versiert sind, und macht sie so zu einem super Werkzeug für eine vielfältige Entwicklergemeinschaft.
Wenn du aber erstmal tiefer in Java eintauchen möchtest, bedenke die Vielzahl von weiteren API-Funktionen, die für dich nützlich werden könnten. Diese eröffnen nicht nur eine Welt voller Automatisierungsmöglichkeiten, sondern lassen dich auch deutlich effizienter arbeiten.