From 04f56b01d41277ece6eb902a0cbaa01880387645 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 20 Jun 2024 12:43:58 +0200 Subject: [PATCH] Docker: Add "isContainerRunning" Change-Id: I2e22f5fb0ed86b0f7d61dc47c23696c00ec875ea Reviewed-by: hjk --- src/plugins/docker/dockerapi.cpp | 20 ++++++++++++++++++++ src/plugins/docker/dockerapi.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/plugins/docker/dockerapi.cpp b/src/plugins/docker/dockerapi.cpp index ea62fd88113..ccfaaf104c3 100644 --- a/src/plugins/docker/dockerapi.cpp +++ b/src/plugins/docker/dockerapi.cpp @@ -54,6 +54,26 @@ bool DockerApi::canConnect() return result; } +bool DockerApi::isContainerRunning(const QString &containerId) +{ + Process process; + FilePath dockerExe = dockerClient(); + if (dockerExe.isEmpty() || !dockerExe.isExecutableFile()) + return false; + + process.setCommand( + CommandLine(dockerExe, QStringList{"inspect", "--format", "{{.State.Running}}", containerId})); + process.runBlocking(); + + if (process.result() == ProcessResult::FinishedWithSuccess) { + QString output = process.readAllStandardOutput().trimmed(); + if (output == "true") + return true; + } + + return false; +} + void DockerApi::checkCanConnect(bool async) { if (async) { diff --git a/src/plugins/docker/dockerapi.h b/src/plugins/docker/dockerapi.h index 3e697654a3a..87301a98d1a 100644 --- a/src/plugins/docker/dockerapi.h +++ b/src/plugins/docker/dockerapi.h @@ -44,6 +44,8 @@ public: static void recheckDockerDaemon(); QFuture>> networks(); + bool isContainerRunning(const QString &containerId); + signals: void dockerDaemonAvailableChanged();