You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)
}

代码说明

  1. Docker客户端初始化:通过client.NewClientWithOpts从环境变量读取Docker连接信息,确保和本地Docker daemon通信正常
  2. IPAM配置:network.IPAM结构体用于定义网络的IP地址管理规则,其中Config数组里的Subnet字段就是终端命令中指定的子网段
  3. 网络创建选项:types.NetworkCreate的Driver字段明确指定使用bridge驱动,和终端命令的-d bridge完全对应
  4. 执行创建:调用cli.NetworkCreate传入网络名称和配置结构体,完成网络创建操作

内容的提问来源于stack exchange,提问作者IsaIkari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:54:14