Docker Engine API

Docker提供了一个用于与Docker守护进程(称为Docker Engine API)交互的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以及所有早期版本。如果发生重大更改,将会有醒目的文档说明。

注意

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

  • 如果守护进程比客户端新,则客户端不知道守护进程中的新功能或已弃用的API端点。

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

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

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

$ docker version
Client:
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:38:18 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.36.0 (172961)
 Engine:
  Version:          27.3.1
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.7
  Git commit:       41ca978
  Built:            Fri Sep 20 11:41:19 2024
  OS/Arch:          linux/arm64
  Experimental:     false
  ...

您可以通过以下任何方式指定要使用的API版本

  • 使用SDK时,请使用最新版本。至少使用包含您需要功能的API版本的版本。

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

  • 要强制Docker CLI或Docker Engine SDK使用比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版本矩阵

已弃用的API版本

v1.24之前的API版本已弃用。您可以在GitHub上的代码库中找到已弃用的API版本的存档文档