Docker 引擎 API
Docker 提供了一个用于与 Docker 守护进程(称为 Docker Engine API)交互的 API,以及用于 Go 和 Python 的 SDK。这些 SDK 允许您高效地构建和扩展 Docker 应用程序和解决方案。如果 Go 或 Python 不适合您,您可以直接使用 Docker Engine API。
有关Docker Engine SDKs的信息,请参阅 使用 Docker Engine SDKs 进行开发。
Docker Engine API 是一种 RESTful API,可以通过诸如 wget 或 curl 的 HTTP 客户端访问,也可以通过大多数现代编程语言中的 HTTP 库访问。
查看API参考
你可以 查看最新版本API的参考 或 选择一个特定版本。
版本化的API和SDK
您应该使用的Docker Engine API版本取决于您的Docker守护进程和Docker客户端的版本。
给定版本的 Docker Engine SDK 支持特定版本的 Docker Engine API,以及所有早期版本。如果发生重大更改,它们会被显著记录。
注意
Docker守护进程和客户端不一定需要始终保持相同的版本。然而,请记住以下几点。
如果守护进程比客户端新,客户端不会知道守护进程中的新功能或已弃用的API端点。
如果客户端比守护进程新,客户端可能会请求守护进程不知道的API端点。
当添加新功能时,会发布新版本的API。Docker API是向后兼容的,因此除非您需要利用新功能,否则不需要更新使用API的代码。
要查看您的 Docker 守护进程和客户端支持的 API 的最高版本,请使用
docker version:
$ docker version
Client: Docker Engine - Community
Version: 27.4.0
API version: 1.47
Go version: go1.22.10
Git commit: bde2b89
Built: Sat Dec 7 10:38:33 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.4.0
API version: 1.47 (minimum version 1.24)
Go version: go1.22.10
Git commit: 92a8393
Built: Sat Dec 7 10:38:33 2024
OS/Arch: linux/amd64
Experimental: false
...
您可以通过以下任一方式指定要使用的API版本:
使用SDK时,请使用最新版本。至少使用包含您所需功能的API版本。
当直接使用
curl时,将版本指定为URL的第一部分。 例如,如果端点是/containers/,你可以使用/v1.47/containers/。要强制Docker CLI或Docker Engine SDKs使用比
docker version报告的版本更旧的API版本,请将环境变量DOCKER_API_VERSION设置为正确的版本。这适用于Linux、Windows或macOS客户端。$ DOCKER_API_VERSION=1.46当设置了环境变量时,即使Docker守护程序支持更新的版本,也会使用该版本的API。此环境变量会禁用API版本协商,因此只有在必须使用特定版本的API或用于调试目的时才应使用它。
Docker Go SDK 允许您启用 API 版本协商,自动选择客户端和正在使用的 Docker Engine 都支持的 API 版本。
对于SDK,您还可以通过编程方式将API版本指定为
client对象的参数。请参阅 Go构造函数 或 Python SDK文档中的client。
API 版本矩阵
| Docker version | Maximum API version | Change log |
|---|---|---|
| 27.4 | 1.47 | changes |
| 27.3 | 1.47 | changes |
| 27.2 | 1.47 | changes |
| 27.1 | 1.46 | changes |
| 27.0 | 1.46 | changes |
| 26.1 | 1.45 | changes |
| 26.0 | 1.45 | changes |
| 25.0 | 1.44 | changes |
| 24.0 | 1.43 | changes |
| 23.0 | 1.42 | changes |
| 20.10 | 1.41 | changes |
| 19.03 | 1.40 | changes |
| 18.09 | 1.39 | changes |
| 18.06 | 1.38 | changes |
| 18.05 | 1.37 | changes |
| 18.04 | 1.37 | changes |
| 18.03 | 1.37 | changes |
| 18.02 | 1.36 | changes |
| 17.12 | 1.35 | changes |
| 17.11 | 1.34 | changes |
| 17.10 | 1.33 | changes |
| 17.09 | 1.32 | changes |
| 17.07 | 1.31 | changes |
| 17.06 | 1.30 | changes |
| 17.05 | 1.29 | changes |
| 17.04 | 1.28 | changes |
| 17.03.1 | 1.27 | changes |
| 17.03 | 1.26 | changes |
| 1.13.1 | 1.26 | changes |
| 1.13 | 1.25 | changes |
| 1.12 | 1.24 | changes |
已弃用的API版本
v1.24 之前的 API 版本已被 弃用。 您可以在 GitHub 上的代码仓库中找到已弃用 API 版本的存档文档: