在使用Docker Go包创建Docker容器时,如何指定同步模式和网络类型?

huangapple go评论90阅读模式
英文:

how to specify sync-mode and network type while creating docker container using docker go pkg in Golang application?

问题

我正在尝试使用Docker Engine SDK和Docker API从我的Golang应用程序创建Docker容器。

这是我想在我的应用程序中实现的命令:

docker run --name rinkeby-node ethereum/client-go --rinkeby --syncmode full

这是我正在使用的代码:

ctx := context.Background()
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
if err != nil {
    panic(err)
}
imageName := "ethereum/client-go"
out, err := cli.ImagePull(ctx, imageName, types.ImagePullOptions{})
if err != nil {
    panic(err)
}
defer out.Close()
io.Copy(os.Stdout, out)

resp, err := cli.ContainerCreate(ctx, &container.Config{
    Image: imageName,
}, nil, nil, nil, "containerName")
if err != nil {
    panic(err)
}

if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
    panic(err)
}
fmt.Println(resp.ID) 

现在我想将syncmode设置为full,并将网络设置为rinkeby。

英文:

I am trying to create docker container from my golang application using Docker Engine SDKs and Docker API

this is the command i want to implement in my application:

> docker run --name rinkeby-node ethereum/client-go --rinkeby --syncmode full

this is the code i am using

	ctx := context.Background()
	cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
	if err != nil {
		panic(err)
	}
	imageName := "ethereum/client-go"
	out, err := cli.ImagePull(ctx, imageName, types.ImagePullOptions{})
	if err != nil {
		panic(err)
	}
	defer out.Close()
	io.Copy(os.Stdout, out)


	resp, err := cli.ContainerCreate(ctx, &container.Config{
		Image: imageName,
	}, nil, nil, nil, "containerName")
	if err != nil {
		panic(err)
	}

	if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
		panic(err)
	}
	fmt.Println(resp.ID) 

now i want to specify the syncmode to full and the network to rinkeby

答案1

得分: 1

--syncmode full--rinkeby 标志是 CMD 的参数。

因此,在调用 ContainerCreate 方法时,在 container.Config 内部添加以下内容:

Cmd: []string{"--syncmode", "full", "--rinkeby"}

完整示例请参见 此处

英文:

The --syncmode full and --rinkeby flags are the CMD arguments.

So when calling you're calling ContainerCreate method inside of container.Config add this:

Cmd: []string{"--syncmode", "full", "--rinkeby"}

For a complete example see this

huangapple
  • 本文由 发表于 2022年1月29日 22:38:22
  • 转载请务必保留本文链接:https://go.coder-hub.com/70906498.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定