Docker 17
引擎 | Engine

总览 | Overview (Engine)

码头引擎API及SDK

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*

$ 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

import docker client = docker.from_env() print client.containers.run("alpine", ["echo", "hello", "world"])

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) }

$ 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

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