【问题标题】:How do I use map[string]struct{}如何使用 map[string]struct{}
【发布时间】:2014-12-02 20:22:27
【问题描述】:

所以我忙着用http://godoc.org/github.com/samalba/dockerclient

使用 CreateContainer (http://godoc.org/github.com/samalba/dockerclient#DockerClient.CreateContainer)

设置新容器

containerConfig := &dockerclient.ContainerConfig{
    Image:        imageName,
    AttachStdin:  true,
    AttachStdout: true,
    AttachStderr: true}

containerID, err = docker.CreateContainer(containerConfig, containerName)

工作正常,我得到了一个容器,但是,没有暴露的端口。查看docker API(https://docs.docker.com/reference/api/docker_remote_api_v1.15/),需要设置

"ExposedPorts - 将端口映射到空对象的对象,格式为:"ExposedPorts": { "/: {}" }"

查看我正在使用的 Go dockclient 库的 godoc,我看到您可以将其传递为

ExposedPorts    map[string]struct{}

但我不知道在这里做什么,来自 docker api 示例传递:

 "ExposedPorts":{
             "22/tcp": {}
     }

足够了,那么我的containerConfig中的struct位怎么做呢?

【问题讨论】:

    标签: go docker


    【解决方案1】:

    把它放在你的容器配置中

    ExposedPorts: map[string]struct{}{
        "22/tcp": {},
    }
    

    例如

    containerConfig := &dockerclient.ContainerConfig{
        Image:        imageName,
        AttachStdin:  true,
        AttachStdout: true,
        AttachStderr: true,
        ExposedPorts: map[string]struct{}{
            "22/tcp": {},
        },
    }
    

    Playground

    【讨论】:

    • 为什么这里的结构是必需的?为什么不只是一个字符串列表?
    • @dalanmiller 字符串列表本质上就是这样,但 API 指定了一个 map[string]struct{},它更像是一组字符串 - 您可以快速查找字符串,但它们是没有特别的顺序。
    猜你喜欢
    • 2020-09-08
    • 2021-08-09
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2019-03-30
    相关资源
    最近更新 更多