引擎 API 版本历史
v1.47 API 变更
GET /images/json响应现在包含Manifests字段,其中包含有关镜像索引中包含的子清单的信息。这包括特定于平台的清单和构建证明等内容。只有当请求同时将manifests查询参数设置为true时,才会填充新字段。 警告:这是实验性的,可能随时更改,不保证任何向后兼容性。
v1.46 API 变更
GET /info现在包含一个Containerd字段,其中包含有关容器 API 套接字的位置以及守护进程用于运行容器和插件的容器命名空间的信息。POST /containers/create字段NetworkingConfig.EndpointsConfig.DriverOpts, 以及POST /networks/{id}/connect字段EndpointsConfig.DriverOpts,现在 支持标签com.docker.network.endpoint.sysctls用于设置每个接口的 sysctls。该值是以逗号分隔的 sysctl 赋值列表, 接口名称必须为 "IFNAME"。例如,要设置net.ipv4.config.eth0.log_martians=1,请使用net.ipv4.config.IFNAME.log_martians=1。在 1.46 及之前的 API 版本中,eth0的顶层--sysctl设置将在可能的情况下迁移至DriverOpts。 此自动迁移将在未来的版本中移除。GET /containers/json现在返回容器的注释。POST /images/{name}/push现在支持一个platform参数(JSON 编码的 OCI 平台类型),允许从多平台镜像中选择特定的平台清单。POST /containers/create现在接受Options作为HostConfig.Mounts.TmpfsOptions的一部分,用于设置 tmpfs 挂载的选项。POST /services/create现在作为ContainerSpec.Mounts.TmpfsOptions的一部分使用Options,用于设置 tmpfs 挂载的选项。GET /events现在支持镜像create事件,该事件在构建新镜像时发出,无论是否已标记。
GET /images/{name}/json 响应中已弃用的配置字段
此端点(用于“镜像检查”)返回的 Config 字段包含额外的字段,这些字段既不属于镜像配置的一部分,也不属于 Docker 镜像规范 和 OCI 镜像规范。
由于实现细节的原因,响应中包含了这些额外字段,其中用于响应的 api/types.ImageInspec 类型使用了 container.Config 类型。
container.Config 类型是镜像配置的超集,虽然镜像的 Config 被用作从该镜像创建的容器的模板,但额外字段是在运行时设置的(来自创建容器时传递的选项),而不是取自镜像的 Config。
这些字段从未被设置(并且总是返回该类型的默认值),但在留空时不会在响应中省略。由于这些字段原本不打算作为镜像配置响应的一部分,因此它们已被弃用,并将从 API 中移除。
以下字段当前包含在 API 响应中,但它们不属于底层镜像的 Config,并且已被弃用:
HostnameDomainnameAttachStdinAttachStdoutAttachStderrTtyOpenStdinStdinOnceImageNetworkDisabled(除非设置,否则已省略)MacAddress(除非设置,否则已省略)StopTimeout(除非设置,否则已省略)
POST /services/create和POST /services/{id}/update现在支持 OomScoreAdj
v1.45 API 变更
POST /containers/create现在支持VolumeOptions.Subpath,这允许挂载命名卷的子路径。POST /images/search将总是为false字段假定一个is-automated值。因此,搜索is-automated=true将不会产生结果,而is-automated=false将是一个无操作。GET /images/{name}/json不再包含Container和ContainerConfig字段。要访问镜像配置,请改用Config字段。- 在调用
GET /containers/{name:.*}/json时返回的Aliases字段不再包含短容器 ID,而是精确反映最初提交给POST /containers/create端点的值。当需要短容器 ID 时,现在应改用新引入的DNSNames。
v1.44 API 变更
- GET
/images/json现在接受一个until过滤器。它接受一个时间戳并列出所有在此之前创建的镜像。<timestamp>可以是 Unix 时间戳、格式化的日期时间戳或 Go 持续时间字符串(例如10m、1h30m),根据守护进程主机的时间进行相对计算。此更改未进行版本控制,如果守护进程应用了此补丁,则会影响所有 API 版本。 VirtualSize、GET /images/{name}/json和GET /images/json响应中的GET /system/df字段现已省略。请改用Size字段,其中包含相同的信息。- 已弃用:
is_automated响应中的GET /images/search字段已被弃用,将来将始终设置为 false,因为 Docker Hub 正在弃用其搜索 API 中的is_automated字段。该弃用不分版本,适用于所有 API 版本。 - 已弃用:
is-automated过滤器用于GET /images/search端点。is_automated字段已被 Docker Hub 的搜索 API 弃用。因此,搜索is-automated=true将不会产生任何结果。此次弃用不分版本,适用于所有 API 版本。 - 在内核版本 >= 5.12 且运行时支持该特性的情况下,只读绑定挂载现在以递归方式变为只读。
POST /containers/create、GET /containers/{id}/json和GET /containers/json现在支持BindOptions.ReadOnlyNonRecursive和BindOptions.ReadOnlyForceRecursive以自定义行为。 POST /containers/create现在接受一个HealthConfig.StartInterval来设置启动期间健康检查的时间间隔。GET /info现在包含一个CDISpecDirs字段,指示已配置的 CDI 规范目录。使用该应用设置需要守护进程启用实验性功能,对于非实验性守护进程,始终返回空列表。POST /networks/create现在会在IPAMConfig包含无效值时返回 400。请注意,此更改是无版本的,并应用于守护进程上支持版本 1.44 的所有 API 版本。POST /networks/create使用重复名称现在会系统性地失败。因此,CheckDuplicate字段现已弃用。请注意,此更改是无版本的,并应用于支持版本 1.44 的守护进程上的所有 API 版本。POST /containers/create现在接受NetworkingConfig.EndpointSettings中的多个EndpointSettings。POST /containers/create和POST /networks/{id}/connect现在将捕获 验证错误,这些错误以前仅在POST /containers/{id}/start期间返回。 这些端点还将返回它们发现的完整验证错误集, 而不是仅返回第一个。 请注意,此更改是 未版本化 的,适用于所有 API 版本。POST /services/create和POST /services/{id}/update现在接受Seccomp和AppArmor字段在ContainerSpec.Privileges对象中。这允许 在 Swarm 服务中进行一些 Seccomp 和 AppArmor 配置。- 在
POST /containers/create上的NetworkSettings.EndpointSettings中添加了一个新的端点特定MacAddress字段,在POST /networks/{id}/connect上的EndpointConfig中也添加了该字段。POST /containers/create上Config中的容器范围MacAddress字段现已弃用。 POST /services/create和POST /services/{id}/update请求中的字段Networks现已弃用。您应该改用字段TaskTemplate.Networks。GET /images/{name}/json响应中的Container和ContainerConfig字段已弃用,将不再包含在 API v1.45 中。GET /info现在包含status个属性,位于Runtimes中。- 一个名为
DNSNames的新字段已添加到GET /containers/{name:.*}/json中,该字段包含容器在特定网络上采用的所有非完全限定 DNS 名称。 - 在 v1.44 及更早版本的
GET /containers/{name:.*}/json调用返回的Aliases字段中包含短容器 ID。这将在下一个 API 版本 v1.45 中改变。从该 API 版本开始,这个特定值将从Aliases字段中移除,以便该字段精确反映最初提交给POST /containers/create端点的值。新引入的DNSNames现在应该被用来替代它。 - 在调用
GET /containers/{id}/json时,NetworkSettings中可用的字段HairpinMode、LinkLocalIPv6Address、LinkLocalIPv6PrefixLen、SecondaryIPAddresses、SecondaryIPv6Addresses已弃用,并将在未来的版本中移除。您应该在NetworkSettings.Networks中查找默认网络。 GET /images/{id}/json如果镜像配置中缺少Created字段,则省略Created字段(之前为0001-01-01T00:00:00Z)。
v1.43 API 变更
POST /containers/create现在接受Annotations作为HostConfig的一部分。 可用于将任意元数据附加到容器,该元数据也会在容器启动时传递给运行时。GET /images/json不再为未标记的镜像在RepoTags和RepoDigests中包含硬编码的<none>:<none>和<none>@<none>。 在这种情况下,将改为生成空数组。GET /images/{name}/json、GET /images/json和GET /system/df响应中的VirtualSize字段已弃用,将不再包含在 API v1.44 中。请改用Size字段,其中包含相同的信息。GET /info现在包含no-new-privileges在SecurityOptions字符串列表中,当此选项全局启用时。此更改未版本化,如果守护进程具有此补丁,则影响所有 API 版本。
v1.42 API 变更
移除了
BuilderSize端点上的GET /system/df字段。该字段 在 API 1.31 中作为实验性功能的一部分引入,自 API 1.40 起不再 使用。 请改用BuildCache字段来跟踪构建器组件使用的存储。POST /containers/{id}/stop和POST /containers/{id}/restart现在接受一个signal查询参数,该参数允许覆盖容器的默认停止信号。GET /images/json现在接受查询参数shared-size。当设置为true时, 返回的镜像将包含SharedSize,它提供了与系统上存在的其他镜像共享的磁盘大小。GET /system/df现在接受查询参数type。设置后,仅计算并返回指定对象类型的数据。 该参数可以指定多次以选择多个对象类型。 支持的值有:container、image、volume、build-cache。GET /system/df现在可以并发使用。如果在处理前一个请求时发起了新的请求,该请求将在正在运行的计算完成后接收其结果。以前,在这种情况下会返回错误 (a disk usage operation is already running)。此更改未进行版本控制,如果守护进程 (daemon) 包含此补丁,则会影响所有 API 版本。当使用
fromSrc选项从归档导入镜像时,POST /images/create现在支持通过platform查询参数传递的操作系统和架构。以前,仅使用操作系统,而忽略架构。如果未设置platform选项,则默认使用主机的操作系统和架构。此更改未进行版本控制,如果守护程序具有此补丁,则会影响所有 API 版本。如果提供了无效的
condition,POST /containers/{id}/wait端点现在返回400状态码(在 API 1.30 及更高版本上)。已从
KernelMemory和POST /containers/{id}/update端点中移除了POST /containers/create字段,在 API 版本v1.42及更高版本中,对该字段设置的任何值都将被忽略。 较旧的 API 版本仍接受此字段,但可能不会生效,具体取决于所使用的内核版本和 OCI 运行时。GET /containers/{id}/json现在会省略KernelMemory和KernelMemoryTCP如果它们未被设置。GET /info现在会省略KernelMemory和KernelMemoryTCP,如果主机或主机配置不支持它们(如果正在使用 cgroups v2)。GET /_ping和HEAD /_ping现在默认返回Builder-Version。 此标头包含要使用的默认构建器,是由守护进程通告的建议。然而,选择使用哪个构建器取决于客户端。Linux 上的默认值是版本 “2”,但守护进程可以配置为推荐版本 “1”。Windows 尚不支持原生 Windows 镜像的 BuildKit,并使用 “1” 作为默认值。
此更改未版本化,如果守护进程具有此补丁,则会影响所有 API 版本。
GET /_ping和HEAD /_ping现在返回一个Swarm头部,这允许客户端检测守护进程上是否启用了 Swarm,而无需调用额外的端点。 此更改未进行版本控制,如果守护进程应用了此补丁,则会影响所有 API 版本。客户端必须将此头部视为“可选”,如果该头部不存在,则应回退到使用其他端点来获取此信息。Swarm标头可以包含以下值之一:- "不活跃"
- "等待中"
- "错误"
- "已锁定"
- "active/worker"
- "活跃/管理者"
POST /containers/create对于 Windows 容器现在接受一种新的语法在HostConfig.Resources.Devices.PathOnHost。除了现有的class/<GUID>语法外,现在也识别<IDType>://<ID>。对特定<IDType>值的支持 取决于底层实现和 Windows 版本。此更改未进行 版本控制,如果守护进程具有此补丁,则会影响所有 API 版本。GET /containers/{id}/attach,GET /exec/{id}/start,GET /containers/{id}/logsGET /services/{id}/logs和GET /tasks/{id}/logs现在设置 Content-Type 头为application/vnd.docker.multiplexed-stream,当多路复用的 stdout/stderr 流被发送到客户端时,否则为application/vnd.docker.raw-stream。POST /volumes/create现在接受一个新的ClusterVolumeSpec来创建集群卷 (CNI)。此选项仅在守护进程是 Swarm 管理器时才能使用。创建时的卷响应现在也可以包含一个ClusterVolume字段,其中包含有关已创建卷的信息。由
GET /system/df返回的BuildCache.Parent字段已被弃用 并且现在已被省略。v1.42 之前的 API 版本继续包含此字段。GET /system/df现在包含一个新的Parents字段,用于“构建缓存”记录, 其中包含构建缓存记录的父 ID 列表。由
GET /volumes/{name}、GET /volumes和GET /system/df返回的卷信息现在可以包含ClusterVolume,如果该卷是集群卷(需要守护进程是 Swarm 管理器)。Volume类型,由Added newClusterVolume` 字段返回新增了一个
PUT /volumes{name}端点以更新集群卷 (CNI)。 集群卷仅在守护进程为 Swarm 管理器时受支持。GET /containers/{name}/attach/ws端点现在接受stdin、stdout和stderr查询参数,以便仅附加到已配置的流。注意:这些参数在较早的 API 版本中已有文档记录,但实际上并不受支持。v1.42 之前的 API 版本将继续忽略这些参数,并默认附加到所有流。要保留 v1.42 之前的行为,请设置所有三个查询参数(
?stdin=1,stdout=1,stderr=1)。POST /containers/create在 Linux 上现在遵守HostConfig.ConsoleSize属性。 容器会立即以所需的终端尺寸创建,客户端不再需要 自行设置所需的尺寸。POST /containers/create允许将CreateMountpoint设置为在缺失时创建主机路径。这带来了与Binds的一致性POST /containers/create如果在挂载类型不匹配的情况下设置了 BindOptions|VolumeOptions|TmpfsOptions,则会拒绝请求。POST /containers/{id}/exec现在接受一个可选的ConsoleSize参数。 它允许在创建执行进程时立即设置其控制台大小。POST /volumes/prune现在默认只会清理“匿名”卷(未指定名称的卷)。一个新的过滤器参数all可以设置为真值(true,1)以获取旧行为。
v1.41 API 变更
GET /events现在在清理资源完成后返回prune个事件。 清理事件针对container、network、volume、image和builder返回,并且具有一个reclaimed属性,指示回收的空间量 (以字节为单位)。GET /info现在返回一个CgroupVersion字段,其中包含 cgroup 版本。GET /info现在返回一个DefaultAddressPools字段,包含本地网络的自定义默认地址池列表,可以在daemon.json文件或--default-address-pooldockerd 选项中指定。POST /services/create和POST /services/{id}/update现在支持BindOptions.NonRecursive。GET /info中的ClusterStore和ClusterAdvertise字段已弃用,如果它们包含空值,现在将被省略。此更改未进行版本控制,如果守护程序具有此补丁,则会影响所有 API 版本。在 Docker 1.13 中被弃用并以
filters选项取代的filter(单数) 查询参数,现已从GET /images/json端点中移除。该参数在使用 API 版本 1.40 或更低版本时仍然可用。GET /services现在返回CapAdd和CapDrop作为ContainerSpec的一部分。GET /services/{id}现在返回CapAdd和CapDrop作为ContainerSpec的一部分。POST /services/create现在接受CapAdd和CapDrop作为ContainerSpec的一部分。POST /services/{id}/update现在接受CapAdd和CapDrop作为ContainerSpec的一部分。GET /tasks现在返回CapAdd和CapDrop作为ContainerSpec的一部分。GET /tasks/{id}现在返回CapAdd和CapDrop作为ContainerSpec的一部分。GET /services现在返回Pids在TaskTemplate.Resources.Limits中。GET /services/{id}现在返回Pids在TaskTemplate.Resources.Limits中。POST /services/create现在接受TaskTemplate.Resources.Limits中的Pids。POST /services/{id}/update现在接受Pids中的TaskTemplate.Resources.Limits以限制 PID 的最大数量。GET /tasks现在返回Pids在TaskTemplate.Resources.Limits中。GET /tasks/{id}现在返回Pids在TaskTemplate.Resources.Limits中。POST /containers/create现在接受格式为os[/arch[/variant]]的platform查询参数。设置后,守护进程会检查本地镜像缓存中是否存在具有指定操作系统和架构的请求镜像,如果不存在,则返回
404状态。如果该选项未设置,则使用宿主机的原生操作系统和架构在镜像缓存中查找镜像。但是,如果没有传递平台参数,且给定的镜像确实存在于本地镜像缓存中,但其操作系统或架构不匹配,则容器将使用可用的镜像创建,并在响应的
Warnings字段中添加警告,例如;WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requestedPOST /containers/create在 Linux 上现在接受HostConfig.CgroupnsMode属性。 将该属性设置为host以在守护进程的 cgroup 命名空间中创建容器,或者private以在其自己的私有 cgroup 命名空间中创建容器。每个守护进程的 默认值为host,并且可以通过使用CgroupNamespaceMode守护进程配置 参数进行更改。GET /info现在返回一个OSVersion字段,包含操作系统的版本。此更改未版本化,如果守护进程具有此补丁,则会影响所有 API 版本。GET /info不再返回SystemStatus字段(如果未设置值)。此更改未版本化,如果守护程序具有此补丁,则会影响所有 API 版本。GET /services现在接受查询参数status。当设置为true时, 返回的服务将包含ServiceStatus,其中提供了该服务的期望、运行中和已完成任务计数。GET /services现在可以在ServiceSpec中包含ReplicatedJob或GlobalJob作为Mode。GET /services/{id}现在可以在ServiceSpec中包含ReplicatedJob或GlobalJob作为Mode。POST /services/create现在接受ReplicatedJob orGlobalJobas theModein theServiceSpec。POST /services/{id}/update接受更新ServiceSpec.Mode中ReplicatedJob对象的字段。但是,服务模式仍然无法更改。GET /services现在包含JobStatus在服务上,模式为ReplicatedJob或GlobalJob。GET /services/{id}现在包含JobStatus在服务上,模式为ReplicatedJob或GlobalJob。GET /tasks现在包含来自作业模式服务生成的任务的JobIteration。GET /tasks/{id}现在包含任务上的JobIteration,如果是从作业模式服务生成的。GET /containers/{id}/stats现在接受一个查询参数 (one-shot),当与stream=false一起使用时,它会获取单个统计数据集,而不是等待两个收集周期来获取 1 秒内的 2 个 CPU 统计数据。HostConfig.Resources中的KernelMemory字段现已弃用。Info中的KernelMemory字段现已弃用。GET /services现在返回Ulimits作为ContainerSpec的一部分。GET /services/{id}现在返回Ulimits作为ContainerSpec的一部分。POST /services/create现在接受Ulimits作为ContainerSpec的一部分。POST /services/{id}/update现在接受Ulimits作为ContainerSpec的一部分。
v1.40 API 变更
- 现在可以使用
GET或HEAD请求访问/_ping端点。 当使用HEAD请求访问时,会返回所有标头,但主体 为空(Content-Length: 0)。此变更未进行版本控制,如果守护进程具有此补丁,则会影响所有 API 版本。建议客户端尝试 使用HEAD,但如果HEAD请求失败,则回退到GET。 GET /_ping和HEAD /_ping现在设置Cache-Control和Pragma标头以防止结果被缓存。此更改未进行版本控制,如果守护程序具有此补丁,则会影响所有 API 版本。GET /services现在返回Sysctls作为ContainerSpec的一部分。GET /services/{id}现在返回Sysctls作为ContainerSpec的一部分。POST /services/create现在接受Sysctls作为ContainerSpec的一部分。POST /services/{id}/update现在接受Sysctls作为ContainerSpec的一部分。POST /services/create现在接受Config作为ContainerSpec.Privileges.CredentialSpec的一部分。POST /services/{id}/update现在接受Config作为ContainerSpec.Privileges.CredentialSpec的一部分。POST /services/create现在包含Runtime作为ContainerSpec.Configs中的一个选项POST /services/{id}/update现在包含Runtime作为ContainerSpec.Configs中的一个选项GET /tasks现在返回Sysctls作为ContainerSpec的一部分。GET /tasks/{id}现在返回Sysctls作为ContainerSpec的一部分。GET /networks现在支持dangling过滤器类型。当设置为true(或1) 时,端点返回所有未被容器使用的网络。当 设置为false(或0) 时,仅返回被一个或多个容器 使用的网络。GET /nodes现在支持一种过滤器类型node.label过滤器,用于根据 node.label 过滤节点。标签过滤器的格式为node.label=<key>/node.label=<key>=<value>以返回具有指定标签的节点,或者node.label!=<key>/node.label!=<key>=<value>以返回不具有指定标签的节点。POST /containers/create现在接受fluentd-async选项,位于HostConfig.LogConfig.Config中 当使用 Fluentd 日志驱动程序时。此选项废弃了fluentd-async-connect选项,该选项仍然有效,但将在未来的版本中移除。鼓励用户 在后续使用fluentd-async选项。此更改 未进行版本控制,如果守护程序具有此补丁,则影响所有 API 版本。POST /containers/create现在接受fluentd-request-ack选项在HostConfig.LogConfig.Config中,当使用 Fluentd 日志驱动时。如果启用, Fluentd 日志驱动会发送带有唯一 ID 的块选项。服务器 将响应确认。此选项提高了 消息传输的可靠性。此更改未进行版本控制,如果守护进程具有此补丁,则影响所有 API 版本。POST /containers/create,GET /containers/{id}/json, andGET /containers/json现在支持BindOptions.NonRecursive。POST /swarm/init现在接受一个DataPathPort属性来设置数据路径端口号。GET /info现在返回有关当前在 swarm 中使用的DataPathPort的信息GET /info现在返回PidsLimit布尔值,以指示宿主机内核是否启用了 PID 限制支持。GET /info现在包含name=rootless在SecurityOptions中,当守护进程以无根模式运行时。此更改未进行版本控制,如果守护进程具有此补丁,则会影响所有 API 版本。GET /info现在返回none作为CgroupDriver,当守护进程在无根模式下运行时。 此更改未进行版本控制,如果守护进程具有此补丁,则会影响所有 API 版本。POST /containers/create现在接受DeviceRequests作为HostConfig的一部分。 可用于设置 Nvidia GPU。GET /swarm个端点现在返回 DataPathPort 信息POST /containers/create现在采用KernelMemoryTCP字段来设置内核 TCP 缓冲区内存的硬性限制。GET /service现在返回MaxReplicas作为Placement的一部分。GET /service/{id}现在返回MaxReplicas作为Placement的一部分。POST /service/create和POST /services/(id or name)/update现在将字段MaxReplicas作为服务Placement的一部分,允许为该服务指定每个节点的最大副本数。POST /containers/create在 Linux 上现在会创建一个带有HostConfig.IpcMode=private的容器(默认),如果 IpcMode 没有被显式指定。每个守护进程的默认值可以通过使用DefaultIpcMode守护进程配置参数改回shareable。POST /containers/{id}/update现在接受一个PidsLimit字段来调整容器的 PID 限制。设置0或-1表示无限制。保留null以不更改当前值。POST /build现在接受outputs密钥,用于在使用 BuildKit 模式时配置构建输出。
V1.39 API 变更
GET /info现在返回一个空字符串,而不是<unknown>对于KernelVersion和OperatingSystem,如果守护进程无法获取此信息。GET /info现在返回有关产品许可证的信息,如果许可证 已应用于守护进程。GET /info现在返回一个Warnings字段,其中包含有关缺失功能或与守护进程配置相关问题的警告和信息性消息。POST /swarm/init现在接受DefaultAddrPool属性来设置全局范围默认地址池POST /swarm/init现在接受一个SubnetSize属性,通过为每个此类网络提供子网掩码长度来设置全局作用域网络POST /session(在 V1.31 中添加,不再处于实验阶段。 此端点可用于在客户端和守护进程之间运行交互式长连接协议。
V1.38 API 变更
GET /tasks和GET /tasks/{id}现在返回一个NetworkAttachmentSpec字段, 包含连接到“可附加”群组范围网络的非服务容器的ContainerID。
v1.37 API 变更
POST /containers/create和POST /services/create现在支持暴露 SCTP 端口。POST /configs/create和POST /configs/{id}/create现在接受Templating驱动程序。GET /configs和GET /configs/{id}现在返回配置的Templating驱动。POST /secrets/create和POST /secrets/{id}/create现在接受Templating驱动程序。GET /secrets和GET /secrets/{id}现在返回机密的Templating驱动程序。
v1.36 API 变更
Get /events现在在 exec 进程终止时返回exec_die个事件。
v1.35 API 变更
POST /services/create和POST /services/(id)/update现在接受容器规范上的Isolation字段,以设置运行服务的容器的隔离技术(default、process或hyperv)。此 配置仅用于 Windows 容器。GET /containers/(name)/logs现在支持一个额外的查询参数:until, 该参数返回在指定时间戳之前发生的日志行。POST /containers/{id}/exec现在接受一个WorkingDir属性来为 exec 进程设置工作目录,独立于容器的工作目录。Get /version现在返回一个Platform.Name字段,使用 Moby 作为基础的产品可以利用该字段返回平台信息。Get /version现在返回一个Components字段,可用于返回有关所用组件的信息。有关引擎本身的信息现在作为“Component”版本包含在内,并包含来自顶层Version、GitCommit、APIVersion、MinAPIVersion、GoVersion、Os、Arch、BuildTime、KernelVersion和Experimental字段的所有信息。今后,Components部分中的信息优先于其对应的顶层字段。
v1.34 API 变更
POST /containers/(name)/wait?condition=removed现在也会在容器移除失败的情况下返回。一个指向名为Error的结构的指针被添加到响应 JSON 中,以指示失败。 如果Error是null,则容器移除成功,否则 可以从Error.Message字段获取指示容器移除失败原因的错误消息文本。
v1.33 API 变更
GET /events现在支持过滤另外 4 种事件:config、node、secret和service。
v1.32 API 变更
POST /images/create现在接受platform参数,格式为os[/arch[/variant]]。POST /containers/create现在接受HostConfig.IpcMode属性的额外值。新值是private、shareable和none。DELETE /networks/{id or name}修复了当name等于另一个网络的名称时,能够掩盖该id的问题。如果同时存在给定名称的网络和给定ID的网络,现在将删除给定ID的网络。此更改未进行版本控制,如果守护进程(daemon)包含此补丁,将影响所有 API 版本。
v1.31 API 变更
DELETE /secrets/(name)当 secret 不存在时,现在返回状态码 404 而不是 500。POST /secrets/create现在在创建已存在的 secret 时返回状态码 409 而不是 500。POST /secrets/create现在接受一个Driver结构体,允许将Name和特定于驱动的Options传递给外部密钥存储以存储密钥。 如果使用默认(内部)密钥存储,则可以省略Driver属性。GET /secrets/(id)和GET /secrets现在返回一个Driver结构体, 包含用于存储密钥的外部密钥存储的Name和特定于驱动的Options。如果未使用外部存储,则省略Driver属性。POST /secrets/(name)/update现在在更新不是标签的密钥内容时返回状态码 400 而不是 500。POST /nodes/(name)/update现在,当降级最后一个节点失败时,返回状态码 400 而不是 500。GET /networks/(id or name)现在接受一个可选的查询参数scope,该参数将根据范围 (local、swarm或global) 过滤网络。POST /session是一个新的端点,可用于在客户端和守护进程之间运行交互式长连接协议。该端点是实验性的,只有在启用实验性功能启动守护进程时才可用。GET /images/(name)/get现在包含一个ImageMetadata字段,其中包含引擎本地的镜像元数据,而不是镜像配置的一部分。POST /services/create现在接受PluginSpec当TaskTemplate.Runtime设置为pluginGET /events现在支持配置事件create、update和remove,这些事件在用户创建、更新或删除配置时触发GET /volumes/和GET /volumes/{name}现在返回一个CreatedAt字段, 包含卷创建的日期/时间。如果卷的创建日期/时间未知,则省略此字段。对于范围为 "global" 的卷, 此字段表示卷的本地实例的创建日期/时间,这可能与不同节点上同一卷的实例不同。GET /system/df现在为Volumes返回一个CreatedAt字段。有关此字段的描述,请参阅/volumes/端点。
v1.30 API 变更
GET /info现在返回支持的日志驱动程序列表,包括插件。GET /info和GET /swarm现在如果节点在 swarm 集群中,则返回集群范围的 swarm CA 信息:集群根 CA 证书,以及集群 TLS 叶证书颁发者的主题和公钥。如果规范中提供了所需的 CA 签名证书,它也会显示该证书。POST /build/现在(当非静默时)会在 JSON 输出流中为生成的每个镜像生成一条带有负载types.BuildResult的Aux消息。最后一条此类消息将引用构建生成的镜像。GET /nodes和GET /nodes/{id}现在如果节点是 swarm 的一部分,会返回关于 swarm TLS 信息的额外信息:受信任的根 CA,以及颁发者的主题和公钥。GET /distribution/(name)/json是一个新的端点,它针对镜像名称返回包含负载types.DistributionInspect的 JSON 输出流。其中包含描述符(带有摘要)以及通过直接联系注册表获取的支持平台列表。POST /swarm/update现在接受 3 个额外参数作为 swarm 规范的 CA 配置的一部分;用于 swarm 的期望 CA 证书,用于 swarm 的期望 CA 密钥(如果不使用外部证书),以及一个可选参数,用于强制 swarm 生成并轮换到新的 CA 证书/密钥对。POST /service/create和POST /services/(id or name)/update现在接受字段Platforms作为服务Placement的一部分,允许指定服务支持的平台。POST /containers/(name)/wait现在接受一个condition查询参数,用于指示要等待的状态更改条件。此外,现在会立即返回响应头,以确认服务器已为客户端注册了等待回调。POST /swarm/init现在接受一个DataPathAddr属性来设置用于数据流量的 IP 地址或网络接口POST /swarm/join现在接受一个DataPathAddr属性来设置用于数据流量的 IP 地址或网络接口GET /events现在支持服务、节点和密钥事件,这些事件在用户创建、更新和删除服务、节点和密钥时触发GET /events现在支持网络移除事件,该事件在用户移除 Swarm 范围的网络时发出GET /events现在支持一种过滤器类型scope,其支持的值可以是 swarm 和 localPUT /containers/(name)/archive现在接受一个copyUIDGID参数,以允许将 UID/GID 映射复制到目标文件或目录。
v1.29 API 变更
DELETE /networks/(name)现在允许移除入口网络,该网络用于提供路由网格。POST /networks/create现在支持通过指定Ingress布尔字段来创建入口网络。目前,仅在使用 overlay 网络驱动程序时支持此功能。GET /networks/(name)现在返回一个Ingress字段,显示该网络是否为入口网络。GET /networks/现在支持scope过滤器,以根据网络模式(swarm、global或local)过滤网络。GET /services/(id)现在接受一个insertDefaults查询参数,用于将默认值合并到服务检查输出中。POST /containers/prune,POST /images/prune,POST /volumes/prune, 和POST /networks/prune现在支持label过滤器,以根据标签过滤容器、镜像、数据卷或网络。标签过滤器的格式可以是label=<key>/label=<key>=<value>以删除具有指定标签的对象,或者是label!=<key>/label!=<key>=<value>以删除不具有指定标签的对象。POST /services/create现在接受Privileges作为ContainerSpec的一部分。权限目前包括CredentialSpec和SELinuxContext。
v1.28 API 变更
POST /containers/create现在包含一个Consistency字段,用于指定每个Mount的一致性级别,可能的值包括default、consistent、cached或delegated。GET /containers/create现在接受DeviceCgroupRules字段在HostConfig中,允许为创建的容器设置自定义设备 cgroup 规则。- 用于
GET /networks/(id or name)的可选查询参数verbose现在将列出所有服务及其所有任务,包括给定网络上的非本地任务。 GET /containers/(id or name)/attach/ws对于 API 版本 >= v1.28 现以二进制帧格式返回 WebSocket,对于 API 版本 < v1.28 则以文本帧格式返回 WebSocket,以实现向后兼容性。GET /networks仅优化为返回所有网络的列表及特定网络的信息。附加到特定网络的所有容器列表已从此 API 中移除,仅可通过特定网络的GET /networks/{network-id}获取。GET /containers/json现在支持publish和expose过滤器,用于筛选暴露或发布特定端口的容器。POST /services/create和POST /services/(id or name)/update现在接受ReadOnly参数,该参数将容器的根文件系统挂载为只读。POST /build现在接受extrahosts参数,用于指定构建期间使用的主机到 IP 的映射。POST /services/create和POST /services/(id or name)/update现在接受rollback值用于FailureAction。POST /services/create和POST /services/(id or name)/update现在接受一个可选的RollbackConfig对象,该对象指定回滚选项。GET /services现在支持mode过滤器,以根据服务模式(global或replicated)过滤服务。POST /containers/(name)/update现在支持更新NanoCpus,该值表示以 10-9 个 CPU 为单位的 CPU 配额。POST /plugins/{name}/disable现在接受force查询参数,以禁用插件,即使该插件仍在使用中。
v1.27 API 变更
GET /containers/(id or name)/stats现在在online_cpus和cpu_stats中都包含一个online_cpus字段。如果此字段为nil,则为了与旧版守护进程兼容,应使用相应cpu_usage.percpu_usage数组的长度。
v1.26 API 变更
POST /plugins/(plugin name)/upgrade升级一个插件。
v1.25 API 变更
- 现在所有 API 调用都需要提供 API 版本。例如,不能只请求 URL
/containers/json,现在必须请求/v1.25/containers/json。 GET /version现在返回MinAPIVersion。POST /build接受networkmode个参数,用于指定构建过程中使用的网络。GET /images/(name)/json现在如果已填充则返回OsVersionGET /images/(name)/json不再包含RootFS.BaseLayer字段。此字段用于 Windows 镜像,这些镜像使用了预安装在主机上的基础镜像(RootFS.Typelayers+base),该功能已不再受支持,RootFS.BaseLayer字段已被移除。GET /info现在返回Isolation。POST /containers/create现在在 HostConfig 中使用AutoRemove,以便在容器进程退出时在守护进程端启用容器的自动删除。GET /containers/json和GET /containers/(id or name)/json现在返回"removing"作为State.Status字段的值,如果容器正在被移除。以前,返回“exited”作为状态。GET /containers/json现在接受removing作为status过滤器的有效值。GET /containers/json现在支持按health状态过滤容器。DELETE /volumes/(name)现在接受一个force查询参数,用于强制删除已被卷驱动插件在带外移除的卷。POST /containers/create/和POST /containers/(name)/update现在可以验证重启策略。POST /containers/create现在会验证 NetworkingConfig 中的 IPAMConfig,并对无效的 IPv4 和 IPv6 地址返回错误(docker create/run中的--ip和--ip6)。POST /containers/create现在接受HostConfig中的一个Mounts字段,该字段取代了Binds、Volumes和Tmpfs。 注意:Binds、Volumes和Tmpfs仍然可用,并且可以与Mounts结合使用。POST /build现在会在开始构建之前对Dockerfile进行初步验证,如果语法不正确则返回错误。请注意,此更改是 无版本的 并应用于所有 API 版本。POST /build接受cachefrom个参数来指定用于构建缓存的镜像。GET /networks/端点现在正确返回所有网络的列表, 而不是默认网络,如果提供了尾部斜杠,但没有提供name或id。DELETE /containers/(name)端点现在返回错误代码removal of container name is already in progress和状态码 400,当容器名称处于正在删除的状态时。GET /containers/json现在支持使用is-task过滤器来筛选作为任务的容器(即 Swarm 模式下服务的一部分)。POST /containers/create现在采用StopTimeout字段。POST /services/create和POST /services/(id or name)/update现在接受Monitor和MaxFailureRatio参数,这些参数控制服务更新期间对故障的响应。POST /services/(id or name)/update现在接受TaskTemplate内部的ForceUpdate参数,即使没有任何通常会触发更新的更改,该参数也会导致服务被更新。POST /services/create和POST /services/(id or name)/update现在返回一个Warnings数组。GET /networks/(name)现在返回字段Created以响应显示网络创建时间。POST /containers/(id or name)/exec现在接受一个Env字段,其中包含要在命令执行上下文中设置的环境变量列表。GET /volumes,GET /volumes/(name), andPOST /volumes/create现在返回Options字段,该字段包含创建卷时要使用的驱动程序特定选项。GET /exec/(id)/json现在返回Pid,这是被 exec 执行进程的系统 pid。POST /containers/prune已清理停止的容器。POST /images/prune清理未使用的镜像。POST /volumes/prune清理未使用的卷。POST /networks/prune清理未使用的网络。- 每个 API 响应现在都包含一个
Docker-Experimental标头,用于指定是否启用了实验性功能(值可以是true或false)。 - 每个 API 响应现在都包含一个指定服务器默认 API 版本的
API-Version标头。 - 当内核中启用
CONFIG_RT_GROUP_SCHED时,hostConfig选项现在接受CpuRealtimePeriod和CpuRtRuntime字段,以便为实时任务分配 CPU 运行时间。 - 如果守护进程中启用了用户命名空间,那么
GET /info响应中的SecurityOptions字段现在将包含userns。 GET /nodes和GET /node/(id or name)现在作为节点Status的一部分返回Addr,该地址是该节点连接到管理器的地址。HostConfig字段现在包含NanoCpus,它表示 CPU 配额,单位为 10-9 个 CPU。GET /info现在返回关于安全选项的更结构化信息。HostConfig字段现在包含CpuCount,它表示容器可用于执行的 CPU 数量。仅限 Windows 守护进程。POST /services/create和POST /services/(id or name)/update现在接受TTY参数,该参数在容器中分配一个伪 TTY。POST /services/create和POST /services/(id or name)/update现在接受DNSConfig参数,该参数通过Nameservers、Search和Options指定解析器配置文件 (resolv.conf) 中的 DNS 相关配置。POST /services/create和POST /services/(id or name)/update现在支持node.platform.arch和node.platform.os约束在服务TaskSpec.Placement.Constraints字段中。GET /networks/(id or name)现在包含了 swarm 模式覆盖网络的所有对等节点的 IP 和名称。GET /plugins列出插件。POST /plugins/pull?name=<plugin name>拉取一个插件。GET /plugins/(plugin name)检查插件。POST /plugins/(plugin name)/set配置插件。POST /plugins/(plugin name)/enable启用插件。POST /plugins/(plugin name)/disable禁用插件。POST /plugins/(plugin name)/push推送插件。POST /plugins/create?name=(plugin name)创建一个插件。DELETE /plugins/(plugin name)删除插件。POST /node/(id or name)/update现在接受id或name来标识要更新的节点。GET /images/json现在支持reference过滤器。GET /secrets返回有关 secrets 的信息。POST /secrets/create创建一个密钥。DELETE /secrets/{id}移除密钥id。GET /secrets/{id}返回关于秘密id的信息。POST /secrets/{id}/update更新了密钥id。POST /services/(id or name)/update现在接受服务名称或服务ID前缀作为参数。POST /containers/create添加了 2 个内置的 log-opts,适用于所有日志驱动程序,mode(blocking|non-blocking),以及max-buffer-size(例如2m),这启用了非阻塞日志缓冲区。POST /containers/create现在接受HostConfig.Init个字段,以便在容器内运行一个转发信号并回收进程的 init 进程。
v1.24 API 变更
POST /containers/create现在采用StorageOpt字段。GET /info现在返回SecurityOptions字段,显示是否支持apparmor、seccomp或selinux。GET /info不再返回ExecutionDriver属性。在 Docker 1.11 与 ContainerD 集成后,该属性已不再使用。GET /networks现在支持按label和driver进行过滤。GET /containers/json现在支持通过network名称或 ID 过滤容器。POST /containers/create现在接受IOMaximumBandwidth和IOMaximumIOps字段。仅限 Windows 守护进程。POST /containers/create现在返回 HTTP 400 "参数错误" 消息 如果未指定命令(而不是 HTTP 500 "服务器错误")GET /images/search现在接受一个filters查询参数。GET /events现在支持在守护进程配置重新加载时发出的reload事件。GET /events现在支持按守护进程名称或 ID 进行过滤。GET /events现在支持在从容器进程分离时发出的detach事件。GET /events现在支持一个exec_detach事件,该事件在从 exec 进程分离时发出。GET /images/json现在支持过滤器since和before。POST /containers/(id or name)/start不再接受HostConfig。POST /images/(name)/tag不再具有force查询参数。GET /images/search现在支持最大返回搜索结果limit。POST /containers/{name:.*}/copy在此 API 版本中已被移除,并且开始报错。- API 错误现在以 JSON 格式返回,而不是纯文本。
POST /containers/create和POST /containers/(id)/start允许您配置内核参数 以便在容器中使用。POST /containers/<container ID>/exec和POST /exec/<exec ID>/start不再期望存在 "Container" 字段。此属性未被使用, 且不再由 docker 客户端发送。POST /containers/create/现在会验证主机名(应为有效的 RFC 1123 主机名)。POST /containers/create/HostConfig.PidMode字段现在接受container:<name|id>, 以使容器加入现有容器的 PID 命名空间。
v1.23 API 变更
GET /containers/json返回容器的状态,状态为created、restarting、running、paused、exited或dead之一。GET /containers/json返回容器的挂载点。GET /networks/(name)现在返回一个Internal字段,显示网络是否为内部网络。GET /networks/(name)现在返回一个EnableIPv6字段,显示网络是否启用了 ipv6。POST /containers/(name)/update现在支持更新容器的重启策略。POST /networks/create现在支持通过设置EnableIPv6字段在网络上启用 ipv6(使用标签执行此操作将不再有效)。GET /info现在返回CgroupDriver个字段,显示守护进程正在使用的 cgroup 驱动程序;cgroupfs或systemd。GET /info现在返回KernelMemory字段,显示是否支持“内核内存限制”。POST /containers/create现在占用PidsLimit个字段,如果内核版本 >= 4.3 且支持 pids cgroup。GET /containers/(id or name)/stats现在返回pids_stats,如果内核版本 >= 4.3 且支持 pids cgroup。POST /containers/create现在允许您覆盖用户命名空间重映射,并为容器使用特权选项。POST /containers/create现在允许为命名卷指定nocopy,这将禁用从容器路径到卷的自动复制。POST /auth现在在注册表支持时返回IdentityToken。POST /containers/create同时指定了Hostname和Domainname字段会导致容器的 hostname 被设置为Hostname,而不是Hostname.Domainname。GET /volumes现在支持更多过滤器,新增过滤器为name和driver。GET /containers/(id or name)/logs现在接受一个details查询参数,以便流式传输提供给容器LogOpts的额外属性(例如环境变量和标签)以及日志。POST /images/load现在以 JSON 流的形式返回进度信息,并具有一个quiet查询参数用于抑制进度详情。
v1.22 API 变更
HostConfig.LxcConf字段已被移除,并且在POST /containers/create和GET /containers/(id)/json上不再可用。POST /container/(name)/update更新容器的资源。GET /containers/json支持 Windows 上的过滤器isolation。GET /containers/json现在返回容器网络列表。GET /info现在返回Architecture和OSType字段,提供有关守护进程运行所在的主机架构和操作系统类型的信息。GET /networks/(name)现在为连接到网络的每个容器返回一个Name字段。GET /version现在以 RFC3339Nano 格式返回BuildTime字段,以使其与 API 返回的其他日期/时间值保持一致。AuthConfig现在支持用于基于令牌的身份验证的registrytokenPOST /containers/create现在对HostConfig.KernelMemory具有 4M 的最小值限制- 使用
POST /images/(name)/push发起的推送和使用POST /images/create发起的拉取,如果在推送或拉取完成之前发起 API 请求的 HTTP 连接关闭,则会被取消。 POST /containers/create现在允许您为设备设置读/写速率限制(以每秒字节数或每秒 I/O 操作数为单位)。GET /networks现在支持按name、id和type进行过滤。POST /containers/create现在允许您为容器设置静态 IPv4 和/或 IPv6 地址。POST /networks/(id)/connect现在允许您为容器设置静态 IPv4 和/或 IPv6 地址。GET /info现在包括正在运行、已停止和已暂停的容器数量。POST /networks/create现在支持通过设置Internal字段来限制对网络的外部访问。POST /networks/(id)/disconnect现在包含一个Force选项,用于强制断开容器与网络的连接GET /containers/(id)/json现在返回容器的NetworkID。POST /networks/create现在支持 IPAM 配置中的一个选项字段,该字段为自定义 IPAM 插件提供选项。GET /networks/{network-id}现在,如果有可用的自定义 IPAM 插件,则返回其 IPAM 配置选项。GET /networks/<network-id>现在返回用户定义网络的子网信息。GET /info现在可以返回一个SystemStatus字段,用于返回有关构建在引擎之上的应用程序的附加信息。
v1.21 API 变更
GET /volumes列出来自所有卷驱动程序的卷。POST /volumes/create创建卷。GET /volumes/(name)获取有关数据卷的底层信息。DELETE /volumes/(name)删除具有指定名称的数据卷。VolumeDriver已从config移动到HostConfig以使配置可移植。GET /images/(name)/json现在返回有关镜像的RepoTags和RepoDigests的信息。config选项现在接受字段StopSignal,该字段指定用于终止容器的信号。GET /containers/(id)/stats将分别返回每个接口的网络信息。HostConfig选项现在包含DnsOptions字段,用于配置容器的 DNS 选项。POST /build现在可以选择接受构建时变量的序列化映射。GET /events现在包含一个timenano字段,除了现有的time字段。GET /events现在支持按镜像和容器标签进行过滤。GET /info现在列出引擎版本信息,并返回CPUShares和Cpuset的信息。GET /containers/json将返回容器所用镜像的ImageID。POST /exec/(name)/start现在将在容器停止或暂停时返回 HTTP 409。POST /containers/create现在在 HostConfig 中接受KernelMemory以指定内核内存限制。GET /containers/(name)/json现在接受一个size参数。将此参数设置为 '1' 会在SizeRw和SizeRootFs字段中返回容器大小信息。GET /containers/(name)/json现在返回一个NetworkSettings.Networks字段,详细说明了每个网络的网络设置。该字段已弃用NetworkSettings.Gateway、NetworkSettings.IPAddress、NetworkSettings.IPPrefixLen和NetworkSettings.MacAddress字段,这些字段仍会出于向后兼容性而返回,但将在未来的版本中被移除。GET /exec/(id)/json现在返回一个NetworkSettings.Networks字段,详细说明了每个网络的网络设置。该字段已弃用NetworkSettings.Gateway、NetworkSettings.IPAddress、NetworkSettings.IPPrefixLen和NetworkSettings.MacAddress字段,这些字段仍会出于向后兼容性而返回,但将在未来的版本中被移除。HostConfig选项现在包含OomScoreAdj字段,用于调整 badness 启发式算法。该启发式算法用于选择在内存不足情况下 OOM killer 终止哪些进程。
v1.20 API 变更
GET /containers/(id)/archive从容器获取文件系统内容的归档。PUT /containers/(id)/archive将内容归档文件上传并解压到 容器文件系统中现有的目录内。POST /containers/(id)/copy已弃用,建议使用上述archive端点,该端点可用于从容器中下载文件和目录。hostConfig选项现在接受GroupAdd字段,该字段指定了容器进程将作为其运行的其他组列表。
v1.19 API 变更
- 当守护进程检测到与客户端的版本不匹配时(通常发生在客户端版本比守护进程新的情况下),现在会返回 HTTP 400 错误,而不是 404。
GET /containers/(id)/stats现在接受stream布尔值,以仅获取一组统计数据并断开连接。GET /containers/(id)/logs现在接受一个since时间戳参数。GET /info字段Debug、IPv4Forwarding、MemoryLimit和SwapLimit现在作为布尔值而不是整数返回。此外,该 端点现在返回新的布尔字段CpuCfsPeriod、CpuCfsQuota和OomKillDisable。hostConfig选项现在接受字段CpuPeriod和CpuQuotaPOST /build接受cpuperiod和cpuquota选项
v1.18 API 变更
GET /version现在返回Os、Arch和KernelVersion。POST /containers/createandPOST /containers/(id)/start允许您设置容器中使用的 ulimit 设置。GET /info现在返回SystemTime,HttpProxy,HttpsProxy和NoProxy。GET /images/json添加了一个RepoDigests字段以包含镜像摘要信息。POST /build现在可以为构建创建的所有容器设置资源限制。CgroupParent可以在主机配置中传递,以便在特定 cgroup 下设置容器 cgroups。POST /build关闭 HTTP 请求将取消构建POST /containers/(id)/exec包含Warnings个字段到响应中。