使用Go语言通过Docker官方客户端库可实现容器全生命周期管理,首先创建客户端实例并连接Docker守护进程,接着调用ContainerList、ContainerCreate、ContainerStart等方法执行操作,结合context控制与版本固定确保稳定性。
Go语言(Golang)与Docker API交互是实现容器自动化管理的常见需求,比如创建、启动、停止、删除容器等。通过调用Docker的RESTful API,你可以完全用Go程序控制Docker守护进程,无需依赖命令行工具。
Docker官方提供了Go语言客户端库 github.com/docker/docker/client,它封装了对Docker Engine API的调用,是推荐的方式。
安装依赖:
go get github.com/docker/docker/client基本使用步骤:
示例:列出所有运行中的容器
package main要创建容器,需配置镜像、命令、网络、挂载等参数,然后依次调用 ContainerCreate 和 ContainerStart。
resp, err := cli.ContainerCreate(ctx, &container.Config{ContainerCreate 返回容器ID,之后可用该ID进行操作,如日志获取、状态查询、停止或删除。
获取容器日志:
logs, err := cli.ContainerLogs(ctx, containerID, types.Cont
ainerLogsOptions{ShowStdout: true})查询容器状态(如运行中、退出码):
inspect, err := cli.ContainerInspect(ctx, containerID)停止容器(带超时):
err = cli.ContainerStop(ctx, containerID, container.StopOptions{Timeout: nil})删除容器:
err = cli.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{注意:只有停止后的容器才能被删除,除非使用强制选项。
基本上就这些。通过 Docker Go 客户端,你可以完整实现容器生命周期管理。关键是理解 context 控制、结构体参数配置以及错误处理。API 版本建议固定(如 WithVersion),避免因 Docker 升级导致兼容问题。