使用docker/engine-api操作docker

最后更新于:2022-04-01 21:48:34

## docker/engine-api项目简介 docker/engine-api项目是从docker engine项目独立出来的子项目,它的代码主要抽取于docker engine项目的command line(命令行)的操作的部分.所以他可以完成通过命令行完成的功能. #### 作用 * 有了这个项目,就可以摆脱命令行的方式来操作docker engine.使用http的方式与各个节点的docker engine进行沟通.甚至可以用它来自己来开发一个docker的图形界面化的管理系统. * docker为我们提供了一个远程操作docker服务的api[《Docker Remote API》](https://docs.docker.com/engine/reference/api/docker_remote_api/).但是使用这种方式有一个缺点就是你必须自己封装http请求,自己根据json格式来定义相关的数据结构.docker/engine-api项目其实就是帮助我们解决了这样繁琐的工作. * docker/engine-api项目可以实现远程操作docker engine服务 * 采用golang开发,原生兼容docker * 项目开源:github地址:https://github.com/docker/engine-api ## docker/engine-api使用方式 ### 1.项目下载与安装 如果你的golang开发中用到docker/engine-api项目.需要做如下的包引入操作 ``` go get github.com/docker/engine-api cd $GOPATH/src/github.com/docker/engine-api && make deps ``` 第一个命令引入engine-api项目,第二个命令引入项目依赖 ### 2.操作本地docker engine ``` //获取client defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"} cli, err := client.NewClient("unix:///var/run/docker.sock", "v1.22", nil, defaultHeaders) if err != nil { panic(err) } //获取本机所有的容器 options := types.ContainerListOptions{All: true} containers, err := cli.ContainerList(context.Background(), options) if err != nil { panic(err) } //打印容器id for _, c := range containers { fmt.Println(c.ID) } ``` ### 3.操作远程主机docker engine ``` defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"} cli, err := client.NewClient("tcp://192.168.1.158:2375", "v1.22", nil, defaultHeaders) ``` **注意:第一个参数tcp://192.168.1.158:2375**
';