使用Docker Engine API开发

预计阅读时间:5分钟

Docker提供了一个用于与Docker守护进程进行交互的API(称为Docker Engine API),以及用于Go和Python的SDK。使用SDK,您可以快速轻松地构建和扩展Docker应用程序和解决方案。如果Go或Python不适用于您,则可以直接使用Docker Engine API。

有关Docker Engine SDK的信息,请参阅使用Docker Engine SDK进行开发

Docker Engine API是一种RESTful API,可通过HTTP客户端(例如wgetcurl)或HTTP库(大多数现代编程语言的一部分)进行访问。

查看API参考

您可以 查看该API的最新版本的参考选择特定版本

版本化的API和SDK

您应使用的Docker Engine API的版本取决于Docker守护程序和Docker客户端的版本。

给定版本的Docker Engine SDK支持特定版本的Docker Engine API,以及所有早期版本。如果发生重大变化,则会在显眼位置进行记录。

守护程序和客户端API不匹配

Docker守护程序和客户端不必始终保持相同版本。但是,请记住以下几点。

  • 如果守护程序比客户端新,则客户端不知道守护程序中的新功能或不推荐使用的API端点。

  • 如果客户端比守护程序新,则客户端可以请求守护程序不知道的API端点。

添加新功能后,将发布API的新版本。Docker API向后兼容,因此除非需要利用新功能,否则无需更新使用该API的代码。

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

$ docker version

Client: Docker Engine - Community
 Version:           20.10.0
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        7287ab3
 Built:             Tue Dec  8 19:00:39 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Server: Docker Engine - Community
 Engine:
  Version:          20.10.0
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       eeddea2
  Built:            Tue Dec  8 18:58:12 2020
  OS/Arch:          linux/amd64
  ...

您可以通过以下方式之一指定要使用的API版本:

  • 使用SDK时,请使用最新版本,但至少要使用将API版本与所需功能结合在一起的版本。

  • curl直接使用时,将版本指定为URL的第一部分。例如,如果端点为/containers/,则可以使用 /v1.41/containers/

  • 要强制Docker CLI或Docker Engine SDK使用比API报告的版本更旧的API版本docker version,请将环境变量DOCKER_API_VERSION设置为正确的版本。这适用于Linux,Windows或macOS客户端。

    DOCKER_API_VERSION='1.41'
    

    设置环境变量后,即使Docker守护程序支持较新的版本,也会使用该版本的API。此环境变量禁用API版本协商,因此,仅当必须使用特定版本的API或用于调试时,才应使用此环境变量。

  • Docker Go SDK允许您启用API版本协商,自动选择客户端和所使用的Docker Engine都支持的API版本。

  • 对于SDK,您还可以通过编程方式指定API版本,作为client对象的参数。请参阅 Go构造函数 或的 Python SDK文档client

API版本矩阵

Docker版本 最高API版本 变更记录
20.10 1.41 变化
19.03 1.40 变化
18.09 1.39 变化
18.06 1.38 变化
18.05 1.37 变化
18.04 1.37 变化
18.03 1.37 变化
18.02 1.36 变化
17.12 1.35 变化
17.11 1.34 变化
17.10 1.33 变化
17.09 1.32 变化
17.07 1.31 变化
17.06 1.30 变化
17.05 1.29 变化
17.04 1.28 变化
17.03.1 1.27 变化
17.03 1.26 变化
1.13.1 1.26 变化
1.13 1.25 变化
1.12 1.24 变化
1.11 1.23 变化
1.10 1.22 变化
1.9 1.21 变化
1.8 1.20 变化
1.7 1.19 变化
1.6 1.18 变化

存档的API版本

API的较早版本的文档已存档,但可以在GitHub上docker代码存储库中找到

开发API