繁体   English   中英

如何在golang中使用docker cli创建子网

[英]How to use docker cli in golang to create subnet

我正在尝试为我用 Golang 编写的应用程序创建一个 docker 网络。

我知道我可以使用这个NetworkCreate function ,但我不确定如何指定网络选项。

在常规终端控制台中,我可以创建网络

docker network create -d bridge --subnet=174.3.12.5/16 mynet

但是如何使用NetworkCreate()作为这个网络创建的等价物呢?

package main

import (
    "context"
    "fmt"
    "github.com/docker/docker/api/types"
    "github.com/docker/docker/api/types/network"
    "github.com/docker/docker/client"
)

func main() {
    cli, err := client.NewClientWithOpts(client.FromEnv)
    if err != nil {
        fmt.Println(err)
    }

    newnetwork := types.NetworkCreate{IPAM: &network.IPAM{
        Driver: "default",
        Config: []network.IPAMConfig{network.IPAMConfig{
            Subnet: "174.3.12.5/16",
        }},
    }}

    res, err := cli.NetworkCreate(context.Background(), "test", newnetwork)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(res)

}

这是一个最小的可实现示例。 驱动程序的名称是default

您可以通过NetworkCreate options 结构体指定网络选项。

如果要将命令docker network create -d bridge --subnet=174.3.12.5/16 mynet转换为 golang 等效命令,它看起来像这样:

networkResponse, err := client.NetworkCreate(context.Background(), "mynet", types.NetworkCreate{
    Driver: "bridge",
    IPAM: &network.IPAM{
        Config: network.IPAMConfig{
            Subnet: "174.3.12.5/16",
        },
    },
})

您可以使用exec.Command(...).CombinedOutput()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM