总览 | 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
*
$ 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
若要了解更多信息,请查看入门指南...
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com