?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
Engine API是Docker Engine提供的API。它允許您在自己的應(yīng)用程序中控制Docker的各個(gè)方面,構(gòu)建工具來(lái)管理和監(jiān)視在Docker上運(yùn)行的應(yīng)用程序,甚至可以使用它在Docker本身上構(gòu)建應(yīng)用程序。
它是Docker客戶端用來(lái)與引擎通信的API,所以Docker客戶端能夠做的一切都可以用API來(lái)完成。例如:
運(yùn)行和管理容器
管理群集節(jié)點(diǎn)和服務(wù)
讀取日志和度量
創(chuàng)建和管理群集
圖像提取與管理
管理網(wǎng)絡(luò)和卷
API可以用任何HTTP客戶端訪問(wèn),但我們也提供Python和GoSDK...
您應(yīng)該使用的API版本取決于您的Docker守護(hù)程序的版本。當(dāng)添加新功能時(shí),會(huì)發(fā)布新版本的API。Docker API是向后兼容的,因此您不需要更新使用API的代碼,除非您需要利用新功能。
若要查看您的Docker守護(hù)進(jìn)程和客戶端支持的API的最高版本,請(qǐng)使用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
例如,docker run
命令可以很容易地在各種編程語(yǔ)言中實(shí)現(xiàn),并且可以通過(guò)以下方式直接訪問(wèn)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