docker/engine-api项目简介
docker/engine-api项目是从docker engine项目独立出来的子项目,它的代码主要抽取于docker engine项目的command line(命令行)的操作的部分.所以他可以完成通过命令行完成的功能.
作用
- 有了这个项目,就可以摆脱命令行的方式来操作docker engine.使用http的方式与各个节点的docker engine进行沟通.甚至可以用它来自己来开发一个docker的图形界面化的管理系统.
- docker为我们提供了一个远程操作docker服务的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