以下是一个使用 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 使用率、进程使用内存和进程拥有的总内存。

Golang Docker SDK ContainerTop 方法获取容器进程信息

原文地址: https://www.cveoy.top/t/topic/f2ns 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录