文档!
当您决定编写自己的自行车来从Docker集线器或注册表中捕获钩子以自动更新/启动服务器上的容器时,您可能需要Docker Cli,这将有助于管理系统上的Docker守护程序。

要工作,您将需要不低于1.9.4的Go版本
如果您仍未切换到模块,请使用以下命令安装Cli:
go get github.com/docker/docker/client
集装箱下水
以下示例显示了如何使用Docker API启动容器。 在命令行中,您将使用docker run
,但是我们可以在我们的服务中轻松处理此任务。
该示例等效于运行docker run alpine echo hello world
package main { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
获取正在运行的容器的列表
该示例等效于运行docker ps
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }
停止所有正在运行的容器
学习了如何创建和运行容器之后,就该学习如何管理它们了。 以下示例将停止所有正在运行的容器。
不要在生产服务器上运行此代码!
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
记录一个容器
您可以使用单个容器。 以下示例显示具有指定标识符的容器的日志。 在开始之前,您需要更改要接收其日志的容器的标识符。
package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) } options := types.ContainerLogsOptions{ShowStdout: true}
获取图像列表
该示例等效于运行docker image ls
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }
拉力
该示例等效于运行docker pull
package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
使用用户身份验证下载图像
此示例等效于通过身份验证运行docker pull
。
身份验证数据以明文形式发送。 官方Docker注册表使用HTTPS,
还必须将专用注册表配置为使用HTTPS传输数据。
package main import ( "context" "encoding/base64" "encoding/json" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }