26 lines
815 B
Go
26 lines
815 B
Go
package miner
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// DetectContainerRuntime probes docker then podman CLIs.
|
|
func DetectContainerRuntime() ContainerRuntimeInfo {
|
|
for _, cli := range []string{"docker", "podman"} {
|
|
if path, err := exec.LookPath(cli); err == nil {
|
|
out, runErr := exec.Command(path, "version", "--format", "{{.Server.Version}}").CombinedOutput()
|
|
version := strings.TrimSpace(string(out))
|
|
if runErr != nil || version == "" {
|
|
// Older docker without --format still counts as available.
|
|
if _, verErr := exec.Command(path, "version").CombinedOutput(); verErr == nil {
|
|
return ContainerRuntimeInfo{Available: true, CLI: cli, Version: "unknown"}
|
|
}
|
|
continue
|
|
}
|
|
return ContainerRuntimeInfo{Available: true, CLI: cli, Version: version}
|
|
}
|
|
}
|
|
return ContainerRuntimeInfo{}
|
|
}
|