gpt4 book ai didi

go - docker stack deploy 使用客户端 api

转载 作者:IT王子 更新时间:2023-10-29 02:03:33 28 4
gpt4 key购买 nike

我正在玩 docker 的 client api .我已经看到了如何运行容器、推送、拉取等。现在我想部署一个带有组合文件的堆栈,但我认为没有一个函数调用可以做到这一点(无论如何不在客户端 api 中).我查看了 docker 的代码,看到了 how they do it .

这是唯一的方法吗?我试图将依赖性保持在最低限度,但如果没有其他选择,我想我可以接受它。此外,我对 golang 还是很陌生,所以如果有人可以提供一个示例,说明我如何实现 docker stack deploy --compose-file file.yml go code 将不胜感激。

最佳答案

经过更多研究,我认为我有 3 个选择:

  1. 只需使用 os/exec 包和 exec.Command("docker", ...)。这个可以,但是需要docker客户端

  2. 使用 docker/client 提供的东西自己打包并实现调用。这为您提供了最大的控制权,但您需要实现复合调用(docker stack deploy),例如创建图像、网络、启动容器等。

  3. 使用 docker/cli/command 提供的命令包裹。通过这种方式,您还可以访问一些可以被覆盖的配置,并且让 docker 人员担心复合调用。

我最终使用了#3,这是我的代码:

import (
"os"
"github.com/docker/docker/cli/command"
"github.com/docker/docker/cli/command/stack"
"github.com/docker/docker/cli/flags"
)

func main() {
cli := command.NewDockerCli(os.Stdin, os.Stdout, os.Stderr)
cli.Initialize(flags.NewClientOptions())
cmd := stack.NewStackCommand(cli)

// the command package will pick up these, but you could override if you need to
// cmd.SetArgs([]string{"deploy", "--compose-file", "compose.yml", "mystack"})

cmd.Execute()
}

关于go - docker stack deploy 使用客户端 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42155978/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com