golang docker sdk中的CreateContainer方法如何限制cpu
可以使用container.Config的CpuShares字段来限制容器的CPU使用。
示例代码:
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/client"
)
func main() {
ctx := context.Background()
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
// 创建容器配置
config := &container.Config{
Image: "ubuntu",
Cmd: []string{"bash", "-c", "while true; do echo hello world; sleep 1; done"},
CpuShares: 512, // 限制CPU使用
}
// 创建容器
resp, err := cli.ContainerCreate(ctx, config, nil, nil, "")
if err != nil {
panic(err)
}
// 启动容器
if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
panic(err)
}
// 读取容器输出
out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true, Follow: true})
if err != nil {
panic(err)
}
defer out.Close()
// 输出容器输出
if _, err := io.Copy(os.Stdout, out); err != nil {
panic(err)
}
// 删除容器
if err := cli.ContainerRemove(ctx, resp.ID, types.ContainerRemoveOptions{}); err != nil {
panic(err)
}
fmt.Println("Done!")
}
``
原文地址: https://www.cveoy.top/t/topic/f5jA 著作权归作者所有。请勿转载和采集!