如何在docker go client中创建具有内存限制的容器

时间:2018-10-18 09:33:59

标签: docker go moby

我正在尝试使用docker go客户端-https://godoc.org/github.com/docker/docker/client#Client.ContainerCreate创建一个具有内存限制的容器 但是我不知道在函数中的什么位置添加这些参数。

  

docker run -m 250m --name测试仓库/标签

在docker api中,它属于Host Config结构,但在go doc中,我看到了HostConfig中使用的资源下的选项-https://godoc.org/github.com/docker/docker/api/types/container#HostConfig

这样打电话

import(
....
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/events"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/docker/go-connections/nat"
)

...

resp, err1 := cli.ContainerCreate(ctx,
    &container.Config{
            User:         strconv.Itoa(os.Getuid()), // avoid permission issues
            Image:        cfg.ImageName,
            AttachStdin:  false,
            AttachStdout: true,
            AttachStderr: true,
            Tty:          true,
            ExposedPorts: exposedPorts,
            Labels:       labels,
            Env:          envVars,
    },
    &container.HostConfig{
            Binds:       binds,
            NetworkMode: container.NetworkMode(cfg.Network),
            PortBindings: nat.PortMap{
                    "1880": []nat.PortBinding{
                            nat.PortBinding{
                                    HostIP:   "",
                                    HostPort: "1880",
                            },
                    }},
            AutoRemove: true,
            Memory : 262144000, //this does not work
    },
    nil, // &network.NetworkingConfig{},
    name,
)

container.HostConfig类型的结构文字中的未知字段'Memory'。由于它没有字段名,只有类型,所以我不知道如何向Hostconfig添加资源。感谢您的帮助-我是一个新手,由于系统资源的限制,我正在尝试调整一个我正在使用的开源项目-redzilla-

1 个答案:

答案 0 :(得分:3)

您可以使用HostConfig结构的Resources字段来定义内存限制。

Resources: container.Resources{ Memory:3e+7 }