使用docker/engine-api操作docker

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

文章导航