Golang Docker SDK ContainerTop 方法获取容器进程信息
以下是一个使用 Golang Docker SDK 中 ContainerTop 方法获取容器中进程信息的示例代码:
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
"strconv"
)
func main() {
// 创建 docker 客户端
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
// 获取容器 ID
containerID := 'YOUR_CONTAINER_ID'
// 获取容器中的进程信息
processes, err := cli.ContainerTop(context.Background(), containerID, []string{})
if err != nil {
panic(err)
}
// 解析进程信息
for i, header := range processes.Titles {
fmt.Printf('%s ', header)
if i == 0 {
fmt.Printf(' ')
}
}
fmt.Printf('
')
for _, process := range processes.Processes {
pid, _ := strconv.Atoi(process[0])
cmd := process[1]
cpuPercent, _ := strconv.ParseFloat(process[2], 64)
memUsage, _ := strconv.Atoi(process[3])
memLimit, _ := strconv.Atoi(process[4])
fmt.Printf('%d %s %.2f%% %d %d
', pid, cmd, cpuPercent, memUsage, memLimit)
}
}
在上面的示例代码中,我们首先创建了一个 docker 客户端,然后指定容器 ID,调用 ContainerTop 方法获取容器中的进程信息,最后解析进程信息并输出到控制台。
输出结果包括进程号、进程命令、进程 cpu 使用率、进程使用内存和进程拥有的总内存。
原文地址: https://www.cveoy.top/t/topic/f2ns 著作权归作者所有。请勿转载和采集!