一些更多的研究,我想後,我有3種選擇:
只需使用OS/EXEC包和exec.Command("docker", ...)
。這是好的,但它需要碼頭客戶端
使用由docker/client包提供的東西,並自己實現呼叫。這給了你最大的控制權,但你需要實現組合調用(docker stack deploy),例如創建映像,網絡,啓動容器等。
使用docker/cli/command軟件包提供的命令。通過這種方式,您還可以訪問一些可能會被覆蓋的配置,並允許泊塢員們擔心複合調用。
最後我用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代碼,從寫在旅途中爲您服務打造泊塢窗容器。如果你問的是配合,比你可以使用kubernetes或Swarm。如果你想要部署自動化工具,你應該看看一個合理的。 – Altenrion
@Altenrion我的目標是從我自己的應用程序中執行docker命令(特別是docker stack deploy),我想知道什麼是最好的方法。目前我正在查看docker/cli/command包,我認爲這是最接近我需要的 – yasko