如何在Golang中用Docker SDK的NetworkCreate创建指定子网网络?
使用Golang Docker SDK创建指定配置的网络
要实现和终端命令docker network create -d bridge --subnet=174.3.12.5/16 mynet完全等效的操作,你需要通过Docker SDK的NetworkCreate函数,正确构造types.NetworkCreate结构体传递配置参数,具体实现如下:
核心配置对应关系
- 终端的
-d bridge对应结构体中的Driver字段 - 终端的
--subnet=174.3.12.5/16对应IPAM.Config中的Subnet字段 - 网络名称
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() { // 初始化Docker客户端,自动适配本地环境配置 cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) if err != nil { panic(err) } defer cli.Close() ctx := context.Background() // 构造IPAM配置,对应终端的--subnet参数 ipamConfig := &network.IPAM{ Config: []network.IPAMConfig{ { Subnet: "174.3.12.5/16", }, }, } // 构造网络创建选项,对应终端的-d bridge参数 networkOpts := types.NetworkCreate{ Driver: "bridge", IPAM: ipamConfig, } // 调用NetworkCreate创建指定网络 resp, err := cli.NetworkCreate(ctx, "mynet", networkOpts) if err != nil { panic(err) } fmt.Printf("网络创建成功,ID: %s\n", resp.ID) }
代码说明
- Docker客户端初始化:通过
client.NewClientWithOpts从环境变量读取Docker连接信息,确保和本地Docker daemon通信正常 - IPAM配置:
network.IPAM结构体用于定义网络的IP地址管理规则,其中Config数组里的Subnet字段就是终端命令中指定的子网段 - 网络创建选项:
types.NetworkCreate的Driver字段明确指定使用bridge驱动,和终端命令的-d bridge完全对应 - 执行创建:调用
cli.NetworkCreate传入网络名称和配置结构体,完成网络创建操作
内容的提问来源于stack exchange,提问作者IsaIkari
相关产品推荐
相关产品推荐

