首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

总览 | Overview (Engine)

Engine API是Docker Engine提供的API。它允许您在自己的应用程序中控制Docker的各个方面,构建工具来管理和监视在Docker上运行的应用程序,甚至可以使用它在Docker本身上构建应用程序。

它是Docker客户端用来与引擎通信的API,所以Docker客户端能够做的一切都可以用API来完成。例如:

  • 运行和管理容器
  • 管理群集节点和服务
  • 读取日志和度量
  • 创建和管理群集
  • 图像提取与管理
  • 管理网络和卷

API可以用任何HTTP客户端访问,但我们也提供Python和GoSDK...

版本API

您应该使用的API版本取决于您的Docker守护程序的版本。当添加新功能时,会发布新版本的API。Docker API是向后兼容的,因此您不需要更新使用API​​的代码,除非您需要利用新功能。

若要查看您的Docker守护进程和客户端支持的API的最高版本,请使用docker version*

代码语言:javascript
复制
$ docker version

Client:
 Version:      17.04.0-ce
 API version:  1.28
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Wed Apr  5 06:06:36 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Tue Apr  4 00:37:25 2017
 OS/Arch:      linux/amd64
 Experimental: true

API示例

例如,docker run命令可以很容易地在各种编程语言中实现,并且可以通过以下方式直接访问apicurl*

  • Python
  • Go
  • curl
代码语言:javascript
复制
  import docker
  client = docker.from_env()
  print client.containers.run("alpine", ["echo", "hello", "world"])
  
代码语言:javascript
复制
  package main

  import (
  	"io"
  	"os"

  	"github.com/moby/moby/client"
  	"github.com/moby/moby/api/types"
  	"github.com/moby/moby/api/types/container"
  	"golang.org/x/net/context"
  )

  func main() {
  	ctx := context.Background()
  	cli, err := client.NewEnvClient()
  	if err != nil {
  		panic(err)
  	}

  	_, err = cli.ImagePull(ctx, "docker.io/library/alpine", types.ImagePullOptions{})
  	if err != nil {
  		panic(err)
  	}

  	resp, err := cli.ContainerCreate(ctx, &container.Config{
  		Image: "alpine",
  		Cmd:   []string{"echo", "hello world"},
  	}, nil, nil, "")
  	if err != nil {
  		panic(err)
  	}

  	if err := cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
  		panic(err)
  	}

  	if _, err = cli.ContainerWait(ctx, resp.ID); err != nil {
  		panic(err)
  	}

  	out, err := cli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{ShowStdout: true})
  	if err != nil {
  		panic(err)
  	}

  	io.Copy(os.Stdout, out)
  }
  
代码语言:javascript
复制
  $ curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" \
    -d '{"Image": "alpine", "Cmd": ["echo", "hello world"]}' \
    -X POST http:/v1.24/containers/create
  {"Id":"1c6594faf5","Warnings":null}

  $ curl --unix-socket /var/run/docker.sock -X POST http:/v1.24/containers/1c6594faf5/start

  $ curl --unix-socket /var/run/docker.sock -X POST http:/v1.24/containers/1c6594faf5/wait
  {"StatusCode":0}

  $ curl --unix-socket /var/run/docker.sock "http:/v1.24/containers/1c6594faf5/logs?stdout=1"
  hello world
  

若要了解更多信息,请查看入门指南...

扫码关注腾讯云开发者

领取腾讯云代金券