Engine API 版本历史

v1.49 API 变更

Docker Engine API v1.49 文档

  • GET /images/{name}/json 现在支持 platform 参数 (JSON 编码的 OCI Platform 类型),允许指定要检查的多平台镜像的平台。此选项与 manifests 选项互斥。
  • GET /info 现在返回 FirewallBackend 字段,其中包含关于守护程序防火墙配置的信息。
  • 已弃用:在 API v1.49 中,GET /info 响应中 RegistryConfig 结构体内的 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 字段已省略。
  • 已弃用:GET /info 端点中的 ContainerdCommit.ExpectedRuncCommit.ExpectedInitCommit.Expected 字段在 API v1.48 中已弃用,并在 API v1.49 中被省略。

v1.48 API 变更

Docker Engine API v1.48 文档

  • 已弃用:POST /images/create、POST /images/{name}/push 和 POST /build 等返回 JSON 进度响应的流式响应中的 "error" 和 "progress" 字段已弃用。这些字段分别在 API v1.4 (docker v0.6.0) 和 API v1.8 (docker v0.7.1) 中被标记为已弃用,但仍会返回。这些字段在未来的 API 版本中将留空或被省略。用户应转而使用 errorDetailprogressDetail 字段中的信息。
  • 已弃用:守护程序配置中的 "allow-nondistributable-artifacts" 已弃用并默认启用。GET /info 响应中 RegistryConfig 结构体内的 AllowNondistributableArtifactsCIDRsAllowNondistributableArtifactsHostnames 字段现在将始终为 null,并在 API v1.49 中被省略。
  • 已弃用:GET /info 响应中的 BridgeNfIptablesBridgeNfIp6tables 字段现在始终为 false,并在 API v1.49 中被省略。netfilter 模块现在按需加载,不再在守护程序启动期间加载,这使得这些字段已过时。
  • GET /images/{name}/history 现在支持 platform 参数 (JSON 编码的 OCI Platform 类型),允许指定要显示历史记录的平台。
  • POST /images/{name}/loadGET /images/{name}/get 现在支持 platform 参数 (JSON 编码的 OCI Platform 类型),允许指定要加载/保存的平台。不传递此参数将导致加载/保存完整的多平台镜像。
  • 当容器范围内的 Config.VolumeDriver 选项与通过 Mounts 定义的卷结合使用时,POST /containers/create 现在在响应中包含一个警告,因为 VolumeDriver 选项对这些卷无效。此警告以前由 CLI 生成,但现在移至守护程序,以便其他客户端也能收到此警告。
  • POST /containers/create 现在支持类型为 imageMount,用于在容器内挂载镜像。
  • 已弃用:GET /info 端点中的 ContainerdCommit.ExpectedRuncCommit.ExpectedInitCommit.Expected 字段已弃用,并将在 API v1.49 中被省略。
  • 对于 eth0,HostConfig 中的 Sysctls(顶级 --sysctl 设置)不再迁移到 DriverOpts,如 v1.46 的变更中所述。
  • GET /images/jsonGET /images/{name}/json 响应现在包含 Descriptor 字段,其中包含镜像目标的 OCI 描述符。仅当守护程序提供了多平台镜像存储时,此新字段才会填充。警告:这是实验性功能,可能随时更改,且不保证向后兼容性。
  • GET /images/{name}/json 响应现在将返回 Manifests 字段,其中包含镜像索引中包含的子清单信息。这包括平台特定的清单和构建证明等。仅当请求同时将 manifests 查询参数设置为 true 时,此新字段才会填充。其行为与 GET /images/json 端点相同。警告:这是实验性功能,可能随时更改,且不保证向后兼容性。
  • GET /containers/{name}/json 现在返回 ImageManifestDescriptor 字段,其中包含用于创建容器的镜像的平台特定镜像清单的 OCI 描述符。仅当守护程序提供了多平台镜像存储时,此字段才会填充。
  • POST /networks/create 现在有一个 EnableIPv4 字段。将其设置为 false 将禁用网络的 IPv4 IPAM。仅当守护程序启用了实验性功能时,才能将其设置为 false
  • GET /networks/{id} 现在返回 EnableIPv4 字段,显示网络是否启用了 IPv4 IPAM。
  • POST /networks/{id}/connectPOST /containers/create 现在在 EndpointsConfig 中接受 GwPriority 字段。此值用于确定哪个网络端点为容器提供默认网关。选择优先级最高的端点。如果多个端点具有相同的优先级,则按网络名称按字母顺序排序,并选择排序靠前的那个。
  • GET /containers/json 现在在每个网络端点的 NetworkSettings 中返回 GwPriority 字段。
  • API 调试端点 (GET /debug/vars, GET /debug/pprof/, GET /debug/pprof/cmdline, GET /debug/pprof/profile, GET /debug/pprof/symbol, GET /debug/pprof/trace, GET /debug/pprof/{name}) 现在也可以通过版本化 API 路径 (/v<API 版本>/<端点>) 访问。
  • POST /build/prunekeep-bytes 重命名为 reserved-space,并且现在支持额外的清理参数 max-used-spacemin-free-space
  • GET /containers/json 现在返回 ImageManifestDescriptor 字段,与 /containers/{name}/json 中的同名字段匹配。仅当守护程序提供了多平台镜像存储时,此字段才会填充。

v1.47 API 变更

Docker Engine API v1.47 文档

  • GET /images/json 响应现在包含 Manifests 字段,其中包含镜像索引中包含的子清单信息。这包括平台特定的清单和构建证明等。仅当请求同时将 manifests 查询参数设置为 true 时,此新字段才会填充。警告:这是实验性功能,可能随时更改,且不保证向后兼容性。
  • 当守护程序启动时禁用了 bridge-nf-call-iptablesbridge-nf-call-ip6tables 时,GET /info 不再包含警告。现在尝试在需要时加载 br_netfilter 模块,这使得这些警告不再准确。此更改未进行版本控制,如果守护程序具有此补丁,则会影响所有 API 版本。

v1.46 API 变更

Docker Engine API v1.46 文档

  • GET /info 现在包含 Containerd 字段,其中包含关于 containerd API socket 位置以及守护程序用于运行容器和插件的 containerd 命名空间的信息。
  • 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。在 API 版本 1.46 及更低版本中,eth0 的顶级 --sysctl 设置在可能的情况下会迁移到 DriverOpts。此自动迁移将在未来版本中移除。
  • GET /containers/json 现在返回容器的注解 (annotations)。
  • POST /images/{name}/push 现在支持 platform 参数 (JSON 编码的 OCI Platform 类型),允许从多平台镜像中选择特定的平台清单。
  • POST /containers/create 现在接受 Options 作为 HostConfig.Mounts.TmpfsOptions 的一部分,用于设置 tmpfs 挂载的选项。
  • POST /services/create 现在接受 Options 作为 ContainerSpec.Mounts.TmpfsOptions 的一部分,用于设置 tmpfs 挂载的选项。
  • GET /events 现在支持 image create 事件,当构建新镜像时会发出此事件,无论是否对其进行了标记。

`GET /images/{name}/json` 响应中已弃用的 Config 字段

此端点(用于 "image inspect")返回的 Config 字段包含额外字段,这些字段不属于镜像的配置,也不属于 Docker Image SpecOCI Image Spec 的一部分。

响应中包含这些额外字段,这是由于一个实现细节造成的,用于响应的 api/types.ImageInspec 类型使用了 container.Config 类型。

container.Config 类型是镜像配置的超集,虽然镜像的 Config 用作从该镜像创建容器的模板,但这些额外字段是在运行时设置的(通过创建容器时传递的选项),而不是从镜像 Config 中获取的。

这些字段从未设置(并总是返回其类型的默认值),但在响应中如果为空则不会省略。由于这些字段不打算作为镜像配置响应的一部分,它们已被弃用,并将从 API 中移除。

以下字段当前包含在 API 响应中,但不属于底层镜像的 Config,并且已被弃用:

  • Hostname
  • Domainname
  • AttachStdin
  • AttachStdout
  • AttachStderr
  • Tty
  • OpenStdin
  • StdinOnce
  • Image
  • NetworkDisabled (除非已设置,否则已被省略)
  • MacAddress (除非已设置,否则已被省略)
  • StopTimeout (除非已设置,否则已被省略)
  • POST /services/createPOST /services/{id}/update 现在支持 OomScoreAdj

v1.45 API 变更

Docker Engine API v1.45 文档

  • POST /containers/create 现在支持 VolumeOptions.Subpath,它允许挂载命名卷的子路径。
  • POST /images/search 对于 is-automated 字段将始终假定为 false 值。因此,搜索 is-automated=true 将不会产生任何结果,而 is-automated=false 将不执行任何操作。
  • GET /images/{name}/json 不再包含 ContainerContainerConfig 字段。要访问镜像配置,请改用 Config 字段。
  • 调用 GET /containers/{name:.*}/json 中返回的 Aliases 字段不再包含短容器 ID,而是将准确反映最初提交给 POST /containers/create 端点的值。现在需要短容器 ID 时,应改用新引入的 DNSNames

v1.44 API 变更

Docker Engine API v1.44 文档

  • GET /images/json 现在接受 until 过滤器。这接受一个时间戳,并列出在此之前创建的所有镜像。<timestamp> 可以是 Unix 时间戳、日期格式的时间戳,或相对于守护进程机器时间的 Go duration 字符串(例如 10m, 1h30m)。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。
  • GET /images/{name}/json, GET /images/json, 和 GET /system/df 响应中的 VirtualSize 字段现已省略。请改用包含相同信息的 Size 字段。
  • 已弃用:GET /images/search 响应中的 is_automated 字段已被弃用,将来将始终设置为 false,因为 Docker Hub 在其搜索 API 中弃用了 is_automated 字段。此弃用未进行版本控制,适用于所有 API 版本。
  • 已弃用:GET /images/search 端点的 is-automated 过滤器。is_automated 字段已被 Docker Hub 的搜索 API 弃用。因此,搜索 is-automated=true 将不会产生任何结果。此弃用未进行版本控制,适用于所有 API 版本。
  • 在支持该功能的运行时和内核 >= 5.12 上,只读绑定挂载现在会递归地设置为只读。POST /containers/create, GET /containers/{id}/json, 和 GET /containers/json 现在支持 BindOptions.ReadOnlyNonRecursiveBindOptions.ReadOnlyForceRecursive 来自定义行为。
  • POST /containers/create 现在接受一个 HealthConfig.StartInterval 来设置启动期间健康检查的间隔。
  • GET /info 现在包含一个 CDISpecDirs 字段,指示配置的 CDI 规范目录。应用此设置需要守护进程启用实验性功能,对于非实验性守护进程,始终返回空列表。
  • 如果 IPAMConfig 具有无效值,POST /networks/create 现在返回 400。请注意,此更改是非版本化的,并且应用于支持版本 1.44 的守护进程上的所有 API 版本。
  • 使用重复名称的 POST /networks/create 现在会系统性地失败。因此,CheckDuplicate 字段现已弃用。请注意,此更改是非版本化的,并且应用于支持版本 1.44 的守护进程上的所有 API 版本。
  • POST /containers/create 现在在 NetworkingConfig.EndpointSettings 中接受多个 EndpointSettings
  • POST /containers/createPOST /networks/{id}/connect 现在将捕获以前只在 POST /containers/{id}/start 期间返回的验证错误。这些端点还将返回它们找到的全部验证错误集合,而不是只返回第一个错误。请注意,此更改是非版本化的,并且应用于所有 API 版本。
  • POST /services/createPOST /services/{id}/update 现在在 ContainerSpec.Privileges 对象中接受 SeccompAppArmor 字段。这允许在 Swarm 服务中配置 Seccomp 和 AppArmor 的一些设置。
  • POST /containers/createNetworkSettings.EndpointSettings 中,以及在 POST /networks/{id}/connectEndpointConfig 中,已添加了一个新的端点特定 MacAddress 字段。在 POST /containers/createConfig 中的容器范围 MacAddress 字段现已弃用。
  • POST /services/createPOST /services/{id}/update 请求中的 Networks 字段现已弃用。您应该改用 TaskTemplate.Networks 字段。
  • GET /images/{name}/json 响应中的 ContainerContainerConfig 字段已弃用,并将不再包含在 API v1.45 中。
  • GET /info 现在在 Runtimes 中包含 status 属性。
  • GET /containers/{name:.*}/json 中添加了一个名为 DNSNames 的新字段,其中包含容器在特定网络上获取的所有非完全限定 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 中查找默认网络。
  • 如果镜像配置中缺少 Created 字段,则 GET /images/{id}/json 会省略 Created 字段(以前是 0001-01-01T00:00:00Z)。

v1.43 API 变更

Docker Engine API v1.43 文档

  • POST /containers/create 现在接受 Annotations 作为 HostConfig 的一部分。可用于将任意元数据附加到容器,这些元数据在容器启动时也会传递给运行时。
  • GET /images/json 不再在 RepoTagsRepoDigests 中包含未标记镜像的硬编码 <none>:<none><none>@<none>。在这种情况下,将生成空数组。
  • GET /images/{name}/json, GET /images/json, 和 GET /system/df 响应中的 VirtualSize 字段已弃用,并将不再包含在 API v1.44 中。请改用包含相同信息的 Size 字段。
  • GET /info 现在在全局启用此选项时,在 SecurityOptions 字符串列表中包含 no-new-privileges。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

v1.42 API 变更

Docker Engine API v1.42 文档

  • 已从 GET /system/df 端点中移除 BuilderSize 字段。此字段作为实验性功能的一部分在 API 1.31 中引入,自 API 1.40 以来不再使用。请改用 BuildCache 字段来跟踪构建器组件使用的存储。

  • POST /containers/{id}/stopPOST /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)。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • 在使用 fromSrc 选项从存档导入镜像时,POST /images/create 现在支持通过 platform 查询参数传递的操作系统和架构。以前,只使用了操作系统,而忽略了架构。如果未设置 platform 选项,则使用主机的操作系统和架构作为默认值。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • 如果提供了无效的 conditionPOST /containers/{id}/wait 端点现在返回 400 状态码(在 API 1.30 及以上版本中)。

  • 已从 POST /containers/createPOST /containers/{id}/update 端点移除 KernelMemory 字段,在 API 版本 v1.42 及以上版本中,设置任何值都将被忽略。旧的 API 版本仍然接受此字段,但可能不会生效,具体取决于所使用的内核版本和 OCI 运行时。

  • 如果未设置 KernelMemoryKernelMemoryTCP,则 GET /containers/{id}/json 现在会省略它们。

  • 如果主机或主机配置(如果使用 cgroups v2)不支持 KernelMemoryKernelMemoryTCP,则 GET /info 现在会省略它们。

  • GET /_pingHEAD /_ping 现在默认返回 Builder-Version。此标头包含要使用的默认构建器,并且是守护进程广告的建议。但是,客户端可以选择使用哪个构建器。

    Linux 上的默认值是版本 "2" (BuildKit),但守护进程可以配置为推荐版本 "1" (经典构建器)。Windows 尚不支持 BuildKit for native Windows images,并使用 "1" (经典构建器) 作为默认值。

    此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • GET /_pingHEAD /_ping 现在返回 Swarm 标头,允许客户端检测守护进程是否启用了 Swarm,而无需调用额外的端点。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。客户端必须将此标头视为“可选”,如果标头不存在,则回退到使用其他端点获取此信息。

    Swarm 标头可以包含以下值之一:

    • "inactive" (非活动)
    • "pending" (待定)
    • "error" (错误)
    • "locked" (锁定)
    • "active/worker" (活动/工作节点)
    • "active/manager" (活动/管理节点)
  • 适用于 Windows 容器的 POST /containers/create 现在在 HostConfig.Resources.Devices.PathOnHost 中接受新的语法。除了现有的 class/<GUID> 语法,现在还识别 <IDType>://<ID>。对特定 <IDType> 值的支持取决于底层实现和 Windows 版本。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • 当多路复用 stdout/stderr 流发送到客户端时,GET /containers/{id}/attach, GET /exec/{id}/start, GET /containers/{id}/logs GET /services/{id}/logsGET /tasks/{id}/logs 现在将 Content-Type 标头设置为 application/vnd.docker.multiplexed-stream,否则设置为 application/vnd.docker.raw-stream

  • POST /volumes/create 现在接受新的 ClusterVolumeSpec 来创建集群卷(CNI)。只有当守护进程是 Swarm 管理节点时,此选项才能使用。卷创建响应现在也可以包含一个 ClusterVolume 字段,其中包含有关创建的卷的信息。

  • BuildCache.Parent 字段(由 GET /system/df 返回)已弃用,现已省略。v1.42 之前的 API 版本继续包含此字段。

  • GET /system/df 现在包含一个新的 Parents 字段,用于“构建缓存”记录,其中包含构建缓存记录的父 ID 列表。

  • GET /volumes/{name}, GET /volumesGET /system/df 返回的卷信息现在可以包含一个 ClusterVolume,如果该卷是集群卷(需要守护进程是 Swarm 管理节点)。

  • 卷类型,由 Added new ClusterVolume 字段返回

  • 添加了新的 PUT /volumes{name} 端点来更新集群卷(CNI)。集群卷仅在守护进程是 Swarm 管理节点时受支持。

  • GET /containers/{name}/attach/ws 端点现在接受 stdin, stdoutstderr 查询参数,以便仅附加到配置的流。

    注意:这些参数在旧的 API 版本中已记录,但并未实际支持。v1.42 之前的 API 版本继续忽略这些参数,并默认附加到所有流。要保留 v1.42 之前的行为,请设置所有三个查询参数(?stdin=1,stdout=1,stderr=1)。

  • Linux 上的 POST /containers/create 现在遵循 HostConfig.ConsoleSize 属性。容器会立即以所需的终端大小创建,客户端不再需要自行设置所需的大小。

  • POST /containers/create 允许为宿主机路径设置 CreateMountpoint,以便在缺少时创建。这使其与 Binds 保持一致。

  • 如果 BindOptions|VolumeOptions|TmpfsOptions 设置的挂载类型不匹配,POST /containers/create 将拒绝请求。

  • POST /containers/{id}/exec 现在接受一个可选的 ConsoleSize 参数。它允许在创建时立即设置执行进程的控制台大小。

  • POST /volumes/prune 现在默认仅清除“匿名”卷(即未命名卷)。可以设置新的过滤器参数 all 为 truth-y 值(true, 1)以获得旧的行为。

v1.41 API 变更

Docker Engine API v1.41 文档

  • GET /events 现在在资源清除完成后返回 prune 事件。为 container, network, volume, image, 和 builder 返回清除事件,并带有一个 reclaimed 属性,指示回收的空间量(以字节为单位)。

  • GET /info 现在返回一个 CgroupVersion 字段,包含 cgroup 版本。

  • GET /info 现在返回一个 DefaultAddressPools 字段,包含本地网络的自定义默认地址池列表,可以在 daemon.json 文件或 --default-address-pool dockerd 选项中指定。

  • POST /services/createPOST /services/{id}/update 现在支持 BindOptions.NonRecursive

  • 如果包含空值,GET /info 中的 ClusterStoreClusterAdvertise 字段已弃用,现已省略。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • 在 Docker 1.13 中已弃用并倾向于使用 filters 选项的 filter (单数) 查询参数现已从 GET /images/json 端点中移除。在使用 API 版本 1.40 或更早版本时,该参数仍然可用。

  • GET /services 现在将 CapAddCapDrop 作为 ContainerSpec 的一部分返回。

  • GET /services/{id} 现在将 CapAddCapDrop 作为 ContainerSpec 的一部分返回。

  • POST /services/create 现在接受 CapAddCapDrop 作为 ContainerSpec 的一部分。

  • POST /services/{id}/update 现在接受 CapAddCapDrop 作为 ContainerSpec 的一部分。

  • GET /tasks 现在将 CapAddCapDrop 作为 ContainerSpec 的一部分返回。

  • GET /tasks/{id} 现在将 CapAddCapDrop 作为 ContainerSpec 的一部分返回。

  • GET /services 现在在 TaskTemplate.Resources.Limits 中返回 Pids

  • GET /services/{id} 现在在 TaskTemplate.Resources.Limits 中返回 Pids

  • POST /services/create 现在在 TaskTemplate.Resources.Limits 中接受 Pids

  • POST /services/{id}/update 现在在 TaskTemplate.Resources.Limits 中接受 Pids,以限制最大 PID 数量。

  • GET /tasks 现在在 TaskTemplate.Resources.Limits 中返回 Pids

  • GET /tasks/{id} 现在在 TaskTemplate.Resources.Limits 中返回 Pids

  • POST /containers/create 现在接受格式为 os[/arch[/variant]]platform 查询参数。

    设置此参数后,守护进程将检查本地镜像缓存中是否存在具有给定 OS 和架构的请求镜像,否则返回 404 状态。

    如果未设置该选项,则使用主机的原生 OS 和架构在镜像缓存中查找镜像。但是,如果未传递平台且给定的镜像确实存在于本地镜像缓存中,但其 OS 或架构不匹配,则会使用可用镜像创建容器,并在响应的 Warnings 字段中添加警告,例如;

    WARNING: The requested image's platform (linux/arm64/v8) does not
             match the detected host platform (linux/amd64) and no
             specific platform was requested
    
  • Linux 上的 POST /containers/create 现在接受 HostConfig.CgroupnsMode 属性。将该属性设置为 host 以在守护进程的 cgroup 命名空间中创建容器,或设置为 private 以在其自己的私有 cgroup 命名空间中创建容器。每个守护进程的默认值为 host,可以通过使用 CgroupNamespaceMode 守护进程配置参数进行更改。

  • GET /info 现在返回一个 OSVersion 字段,包含操作系统的版本。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • 如果 SystemStatus 字段没有设置值,GET /info 将不再返回它。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。

  • GET /services 现在接受查询参数 status。当设置为 true 时,返回的服务将包含 ServiceStatus,它提供了服务的 Desired、Running 和 Completed 任务计数。

  • GET /services 现在可以将 ReplicatedJobGlobalJob 作为 ServiceSpec 中的 Mode 包含进来。

  • GET /services/{id} 现在可以将 ReplicatedJobGlobalJob 作为 ServiceSpec 中的 Mode 包含进来。

  • POST /services/create 现在接受 ReplicatedJobGlobalJob 作为 ServiceSpec 中的 Mode

  • POST /services/{id}/update 接受更新 ServiceSpec.ModeReplicatedJob 对象的字段。但是,服务模式仍然无法更改。

  • GET /services 现在包含模式为 ReplicatedJobGlobalJob 的服务的 JobStatus

  • GET /services/{id} 现在包含模式为 ReplicatedJobGlobalJob 的服务的 JobStatus

  • GET /tasks 现在包含从 job 模式服务派生的 Task 的 JobIteration

  • 如果 Task 是从 job 模式服务派生的,则 GET /tasks/{id} 现在包含 Task 的 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 变更

Docker Engine API v1.40 文档

  • /_ping 端点现在可以使用 GETHEAD 请求访问。使用 HEAD 请求访问时,所有标头都会返回,但正文为空(Content-Length: 0)。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。建议客户端尝试使用 HEAD,但如果 HEAD 请求失败,则回退到使用 GET
  • GET /_pingHEAD /_ping 现在设置 Cache-ControlPragma 标头以防止结果被缓存。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 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> 返回没有指定标签的节点。
  • 在使用 Fluentd 日志驱动程序时,POST /containers/create 现在在 HostConfig.LogConfig.Config 中接受 fluentd-async 选项。此选项弃用了 fluentd-async-connect 选项,后者仍可工作,但将在未来版本中移除。建议用户今后使用 fluentd-async 选项。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。
  • 在使用 Fluentd 日志驱动程序时,POST /containers/create 现在在 HostConfig.LogConfig.Config 中接受 fluentd-request-ack 选项。如果启用,Fluentd 日志驱动程序将发送带有唯一 ID 的 chunk 选项。服务器将响应确认。此选项提高了消息传输的可靠性。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。
  • POST /containers/create, GET /containers/{id}/json, 和 GET /containers/json 现在支持 BindOptions.NonRecursive
  • POST /swarm/init 现在接受 DataPathPort 属性来设置数据路径端口号。
  • GET /info 现在返回有关 Swarm 中当前使用的 DataPathPort 信息。
  • GET /info 现在返回 PidsLimit 布尔值,指示宿主机内核是否启用了 PID 限制支持。
  • 当守护进程以无根模式运行时,GET /info 现在在 SecurityOptions 中包含 name=rootless。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 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/createPOST /services/(id or name)/update 现在接受 MaxReplicas 字段作为服务 Placement 的一部分,允许指定服务的每个节点的副本数上限。
  • 如果未显式指定 IpcMode,Linux 上的 POST /containers/create 现在默认创建具有 HostConfig.IpcMode=private 的容器。可以通过使用 DefaultIpcMode 守护进程配置参数将每个守护进程的默认值更改回 shareable
  • POST /containers/{id}/update 现在接受 PidsLimit 字段,以调整容器的 PID 限制。设置为 0-1 表示无限制。保留 null 表示不更改当前值。
  • 使用 BuildKit 模式时,POST /build 现在接受 outputs 键用于配置构建输出。

V1.39 API 变更

Docker Engine API v1.39 文档

  • 如果守护进程无法获取信息,GET /info 现在对 KernelVersionOperatingSystem 返回空字符串,而不是 <unknown>
  • 如果已应用许可证到守护进程,GET /info 现在返回有关产品许可证的信息。
  • GET /info 现在返回一个 Warnings 字段,其中包含有关缺失功能或与守护进程配置相关问题的警告和信息性消息。
  • POST /swarm/init 现在接受一个 DefaultAddrPool 属性来设置全局范围的默认地址池。
  • POST /swarm/init 现在接受一个 SubnetSize 属性,通过给出每个全局范围网络的子网掩码长度来设置这些网络。
  • POST /session(在 V1.31 中添加)不再是实验性的。此端点可用于在客户端和守护进程之间运行交互式长时间运行协议。

V1.38 API 变更

Docker Engine API v1.38 文档

  • GET /tasksGET /tasks/{id} 现在返回一个 NetworkAttachmentSpec 字段,其中包含连接到“可附加的”Swarm 范围网络的非服务容器的 ContainerID

v1.37 API 变更

Docker Engine API v1.37 文档

  • POST /containers/createPOST /services/create 现在支持暴露 SCTP 端口。
  • POST /configs/createPOST /configs/{id}/create 现在接受一个 Templating 驱动程序。
  • GET /configsGET /configs/{id} 现在返回 Config 的 Templating 驱动程序。
  • POST /secrets/createPOST /secrets/{id}/create 现在接受一个 Templating 驱动程序。
  • GET /secretsGET /secrets/{id} 现在返回 Secret 的 Templating 驱动程序。

v1.36 API 变更

Docker Engine API v1.36 文档

  • Get /events 现在在 exec 进程终止时返回 exec_die 事件。

v1.35 API 变更

Docker Engine API v1.35 文档

  • POST /services/createPOST /services/(id)/update 现在接受 Container 规范上的 Isolation 字段,以设置运行服务的容器的隔离技术(defaultprocesshyperv)。此配置仅用于 Windows 容器。
  • GET /containers/(name)/logs 现在支持一个附加查询参数:until,该参数返回指定时间戳之前发生的日志行。
  • POST /containers/{id}/exec 现在接受一个 WorkingDir 属性来设置 exec 进程的工作目录,与容器的工作目录无关。
  • Get /version 现在返回一个 Platform.Name 字段,可供使用 Moby 作为基础的产品用于返回平台信息。
  • Get /version 现在返回一个 Components 字段,可用于返回有关所用组件的信息。引擎本身的信息现在包含在“Component”版本中,并包含顶级 VersionGitCommitAPIVersionMinAPIVersionGoVersionOsArchBuildTimeKernelVersionExperimental 字段中的所有信息。今后,将优先使用 Components 部分的信息而不是其顶级的对应项。

v1.34 API 变更

Docker Engine API v1.34 文档

  • POST /containers/(name)/wait?condition=removed 现在在容器移除失败的情况下也返回。在响应 JSON 中添加了一个名为 Error 的结构体指针,用于指示失败。如果 Errornull,则容器移除成功;否则,可以通过 Error.Message 字段获取指示容器移除失败原因的错误消息文本。

v1.33 API 变更

Docker Engine API v1.33 文档

  • GET /events 现在支持过滤 4 种更多类型的事件:confignodesecretservice

v1.32 API 变更

Docker Engine API v1.32 文档

  • POST /images/create 现在接受 os[/arch[/variant]] 形式的 platform 参数。
  • POST /containers/create 现在接受 HostConfig.IpcMode 属性的附加值。新值包括 privateshareablenone
  • DELETE /networks/{id or name} 修复了当 name 等于另一个网络的名称时可能屏蔽该 id 的问题。如果同时存在具有给定 name 的网络和具有给定 id 的网络,现在会删除具有给定 id 的网络。此更改未进行版本控制,如果守护进程应用了此补丁,则会影响所有 API 版本。

v1.31 API 变更

Docker Engine API v1.31 文档

  • DELETE /secrets/(name) 现在在 Secret 不存在时返回状态码 404,而不是 500。
  • POST /secrets/create 现在在创建已存在的 Secret 时返回状态码 409,而不是 500。
  • POST /secrets/create 现在接受一个 Driver 结构体,允许将 Name 和驱动程序特定的 Options 传递给外部 secrets 存储进行存储。如果使用默认(内部)secrets 存储,则可以省略 Driver 属性。
  • GET /secrets/(id)GET /secrets 现在返回一个 Driver 结构体,其中包含用于存储 Secret 的外部 secrets 存储的 Name 和驱动程序特定的 Options。如果未使用外部存储,则省略 Driver 属性。
  • POST /secrets/(name)/update 现在在更新不是 Labels 的 Secret 内容时返回状态码 400,而不是 500。
  • POST /nodes/(name)/update 现在在降级最后一个节点失败时返回状态码 400,而不是 500。
  • GET /networks/(id or name) 现在接受一个可选查询参数 scope,该参数将根据 scope(localswarmglobal)过滤网络。
  • POST /session 是一个新的端点,可用于在客户端和守护进程之间运行交互式长时间运行协议。此端点是实验性的,仅在守护进程启用实验性功能时可用。
  • GET /images/(name)/get 现在包含一个 ImageMetadata 字段,其中包含引擎本地的镜像元数据,不属于镜像配置。
  • TaskTemplate.Runtime 设置为 plugin 时,POST /services/create 现在接受一个 PluginSpec
  • GET /events 现在支持用户创建、更新或删除 config 时发出的 config 事件 createupdateremove
  • GET /volumes/GET /volumes/{name} 现在返回一个 CreatedAt 字段,其中包含卷的创建日期/时间。如果卷的创建日期/时间未知,则省略此字段。对于 scope 为 "global" 的卷,此字段表示卷的本地 实例 的创建日期/时间,可能与同一卷在不同节点上的实例有所不同。
  • GET /system/df 现在为 Volumes 返回一个 CreatedAt 字段。有关此字段的描述,请参阅 /volumes/ 端点。

v1.30 API 变更

Docker Engine API v1.30 文档

  • GET /info 现在返回支持的日志驱动程序列表,包括插件。
  • 如果节点在 Swarm 中,GET /infoGET /swarm 现在返回集群范围的 Swarm CA 信息:集群根 CA 证书,以及集群 TLS 叶证书颁发者的主题和公钥。它还显示了期望的 CA 签名证书(如果作为规范的一部分提供了)。
  • POST /build/ 现在(非静默时)在 JSON 输出流中为每个生成的镜像生成一个带有负载 types.BuildResultAux 消息。最后一个此类消息将引用构建产生的镜像。
  • 如果节点是 Swarm 的一部分,GET /nodesGET /nodes/{id} 现在返回有关 Swarm TLS 信息的附加信息:信任的根 CA,以及颁发者的主题和公钥。
  • GET /distribution/(name)/json 是一个新的端点,它以 JSON 输出流的形式返回带有负载 types.DistributionInspect 的镜像名称信息。它包括一个带有摘要的描述符,以及通过直接联系注册表检索到的支持的平台。
  • POST /swarm/update 现在接受作为 Swarm 规范的 CA 配置一部分的 3 个附加参数;Swarm 期望的 CA 证书,Swarm 期望的 CA 密钥(如果未使用外部证书),以及一个可选参数,用于强制 Swarm 生成并轮换到新的 CA 证书/密钥对。
  • POST /service/createPOST /services/(id or name)/update 现在接受 Platforms 字段作为 Service Placement 的一部分,允许指定服务支持的平台。
  • POST /containers/(name)/wait 现在接受一个 condition 查询参数,用于指示等待哪种状态变化条件。此外,响应头现在立即返回,以确认服务器已为客户端注册了等待回调。
  • POST /swarm/init 现在接受一个 DataPathAddr 属性来设置用于数据流量的 IP 地址或网络接口。
  • POST /swarm/join 现在接受一个 DataPathAddr 属性来设置用于数据流量的 IP 地址或网络接口。
  • GET /events 现在支持 service、node 和 secret 事件,这些事件在用户创建、更新和移除 service、node 和 secret 时发出。
  • GET /events 现在支持 network remove 事件,该事件在用户移除 Swarm 范围网络时发出。
  • GET /events 现在支持一个 filter 类型 scope,其支持的值可以是 swarm 和 local。
  • PUT /containers/(name)/archive 现在接受一个 copyUIDGID 参数,以允许将 UID/GID 映射复制到目标文件或目录。

v1.29 API 变更

Docker Engine API v1.29 文档

  • DELETE /networks/(name) 现在允许移除 ingress 网络,即用于提供路由网格的网络。
  • POST /networks/create 现在支持通过指定布尔字段 Ingress 来创建 ingress 网络。目前仅在使用 overlay 网络驱动程序时支持此功能。
  • GET /networks/(name) 现在返回一个 Ingress 字段,显示网络是否是 ingress 网络。
  • GET /networks/ 现在支持一个 scope 过滤器,用于根据网络模式(swarmgloballocal)过滤网络。
  • POST /containers/createPOST /service/createPOST /services/(id or name)/update 现在将 StartPeriod 字段作为 HealthConfig 的一部分,允许指定一个周期,在此期间即使健康检查未通过,容器也不应被视为不健康。
  • GET /services/(id) 现在接受一个 insertDefaults 查询参数,用于将默认值合并到 Service 检查输出中。
  • POST /containers/prunePOST /images/prunePOST /volumes/prunePOST /networks/prune 现在支持 label 过滤器,用于根据 label 过滤容器、镜像、卷或网络。label 过滤器的格式可以是 label=<key>/label=<key>=<value> 以移除具有指定 labels 的对象,或 label!=<key>/label!=<key>=<value> 以移除没有指定 labels 的对象。
  • POST /services/create 现在接受 Privileges 作为 ContainerSpec 的一部分。Privileges 目前包括 CredentialSpecSELinuxContext

v1.28 API 变更

Docker Engine API v1.28 文档

  • POST /containers/create 现在包含一个 Consistency 字段,用于指定每个 Mount 的一致性级别,可能的值有 defaultconsistentcacheddelegated
  • GET /containers/create 现在接受 HostConfig 中的 DeviceCgroupRules 字段,允许为创建的容器设置自定义设备 cgroup 规则。
  • GET /networks/(id or name) 的可选查询参数 verbose 现在将列出所有服务及其所有任务,包括给定网络上的非本地任务。
  • 对于 API 版本 >= v1.28,GET /containers/(id or name)/attach/ws 现在以二进制帧格式返回 WebSocket;对于 API 版本 < v1.28,则以文本帧格式返回 WebSocket,以实现向后兼容性。
  • GET /networks 已优化,现在仅返回所有网络的列表和网络特定信息。连接到特定网络的所有容器的列表已从此 API 中移除,仅通过网络特定的 GET /networks/{network-id} 可用。
  • GET /containers/json 现在支持 publishexpose 过滤器,用于过滤暴露或发布特定端口的容器。
  • POST /services/createPOST /services/(id or name)/update 现在接受 ReadOnly 参数,该参数将容器的根文件系统挂载为只读。
  • POST /build 现在接受 extrahosts 参数,用于指定构建期间使用的主机到 IP 的映射。
  • POST /services/createPOST /services/(id or name)/update 现在接受 FailureActionrollback 值。
  • POST /services/createPOST /services/(id or name)/update 现在接受一个可选的 RollbackConfig 对象,该对象指定回滚选项。
  • GET /services 现在支持一个 mode 过滤器,用于根据服务模式(globalreplicated)过滤服务。
  • POST /containers/(name)/update 现在支持更新 NanoCpus,它表示以 10-9 个 CPU 为单位的 CPU 配额。
  • POST /plugins/{name}/disable 现在接受一个 force 查询参数,即使插件仍在运行中,也可以强制禁用。

v1.27 API 变更

Docker Engine API v1.27 文档

  • GET /containers/(id or name)/stats 现在在 precpu_statscpu_stats 中都包含一个 online_cpus 字段。如果此字段为 nil,为了与旧版本守护进程兼容,应使用相应的 cpu_usage.percpu_usage 数组长度。

v1.26 API 变更

Docker Engine API v1.26 文档

  • POST /plugins/(plugin name)/upgrade 升级插件。

v1.25 API 变更

Docker Engine API v1.25 文档

  • 所有 API 调用现在都必须包含 API 版本。例如,不再仅请求 URL /containers/json,您现在必须请求 /v1.25/containers/json
  • GET /version 现在返回 MinAPIVersion
  • POST /build 接受 networkmode 参数以指定构建期间使用的网络。
  • GET /images/(name)/json 如果填充了 OsVersion,现在会返回它。
  • GET /images/(name)/json 不再包含 RootFS.BaseLayer 字段。此字段用于使用预安装在主机上的基础镜像(RootFS.Typelayers+base)的 Windows 镜像,这已不再支持,因此 RootFS.BaseLayer 字段已被移除。
  • GET /info 现在返回 Isolation
  • POST /containers/create 现在在 HostConfig 中接受 AutoRemove,以便在容器进程退出时在守护进程端启用容器的自动移除。
  • GET /containers/jsonGET /containers/(id or name)/json 现在在容器正在移除时,为 State.Status 字段返回值 "removing"。之前,返回的状态是 "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 字段,该字段替换了 BindsVolumesTmpfs注意BindsVolumesTmpfs 仍然可用,并且可以与 Mounts 结合使用。
  • POST /build 现在在开始构建之前对 Dockerfile 进行初步验证,如果语法不正确则返回错误。请注意,此更改是未进行版本控制的,并应用于所有 API 版本。
  • POST /build 接受 cachefrom 参数以指定用于构建缓存的镜像。
  • GET /networks/ 端点现在正确返回所有网络的列表,而不是在提供了尾部斜杠但没有提供 nameid 时返回默认网络。
  • DELETE /containers/(name) 端点现在在容器名称处于移除进行中的状态时,返回带有状态码 400 的错误,错误消息为 removal of container name is already in progress
  • GET /containers/json 现在支持一个 is-task 过滤器,用于过滤作为 Task 的容器(Swarm 模式下服务的一部分)。
  • POST /containers/create 现在接受 StopTimeout 字段。
  • POST /services/createPOST /services/(id or name)/update 现在接受 MonitorMaxFailureRatio 参数,用于控制服务更新期间对故障的响应。
  • POST /services/(id or name)/update 现在在 TaskTemplate 中接受一个 ForceUpdate 参数,即使没有通常会触发更新的更改,也会导致服务被更新。
  • POST /services/createPOST /services/(id or name)/update 现在返回一个 Warnings 数组。
  • GET /networks/(name) 现在在响应中返回字段 Created,以显示网络创建时间。
  • POST /containers/(id or name)/exec 现在接受一个 Env 字段,其中包含要在命令执行上下文中设置的环境变量列表。
  • GET /volumesGET /volumes/(name)POST /volumes/create 现在返回 Options 字段,其中包含创建卷时使用的驱动程序特定选项。
  • GET /exec/(id)/json 现在返回 Pid,它是已 exec 进程的系统进程 ID。
  • POST /containers/prune 修剪已停止的容器。
  • POST /images/prune 修剪未使用的镜像。
  • POST /volumes/prune 修剪未使用的卷。
  • POST /networks/prune 修剪未使用的网络。
  • 每个 API 响应现在都包含一个 Docker-Experimental 头部,用于指定是否启用了实验性功能(值可以是 truefalse)。
  • 每个 API 响应现在都包含一个 API-Version 头部,用于指定服务器的默认 API 版本。
  • hostConfig 选项现在接受 CpuRealtimePeriodCpuRtRuntime 字段,以便在内核中启用了 CONFIG_RT_GROUP_SCHED 时为实时 (rt) 任务分配 CPU 运行时。
  • GET /info 响应中的 SecurityOptions 字段现在包含 userns,如果守护进程中启用了用户命名空间。
  • GET /nodesGET /node/(id or name) 现在将 Addr 作为节点 Status 的一部分返回,它是该节点连接管理器的地址。
  • HostConfig 字段现在包含 NanoCpus,表示以 10-9 个 CPU 为单位的 CPU 配额。
  • GET /info 现在返回有关安全选项的更结构化的信息。
  • HostConfig 字段现在包含 CpuCount,表示容器可用于执行的 CPU 数量。仅限 Windows 守护进程。
  • POST /services/createPOST /services/(id or name)/update 现在接受 TTY 参数,该参数在容器中分配伪终端 (pseudo-TTY)。
  • POST /services/createPOST /services/(id or name)/update 现在接受 DNSConfig 参数,该参数通过 NameserversSearchOptions 指定解析器配置文件 (resolv.conf) 中的 DNS 相关配置。
  • POST /services/createPOST /services/(id or name)/update 现在在 Services TaskSpec.Placement.Constraints 字段中支持 node.platform.archnode.platform.os 约束。
  • GET /networks/(id or name) 现在包含 Swarm 模式 overlay 网络中所有对等节点的 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 现在接受 idname 来识别要更新的节点。
  • GET /images/json 现在支持 reference 过滤器。
  • GET /secrets 返回有关 Secrets 的信息。
  • POST /secrets/create 创建 Secret。
  • DELETE /secrets/{id} 移除 Secret id
  • GET /secrets/{id} 返回有关 Secret id 的信息。
  • POST /secrets/{id}/update 更新 Secret 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 变更

Docker Engine API v1.24 文档

  • POST /containers/create 现在接受 StorageOpt 字段。
  • GET /info 现在返回 SecurityOptions 字段,显示是否支持 apparmorseccompselinux
  • GET /info 不再返回 ExecutionDriver 属性。Docker 1.11 与 ContainerD 集成后,此属性不再使用。
  • GET /networks 现在支持按 labeldriver 过滤。
  • GET /containers/json 现在支持按网络名称或 ID 过滤容器。
  • POST /containers/create 现在接受 IOMaximumBandwidthIOMaximumIOps 字段。仅限 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 现在支持 sincebefore 过滤器。
  • 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/createPOST /containers/(id)/start 允许您配置在容器中使用的内核参数 (sysctls)。
  • POST /containers/<container ID>/execPOST /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 返回容器的状态,可以是 createdrestartingrunningpausedexiteddead 中的一个。
  • GET /containers/json 返回容器的挂载点。
  • GET /networks/(name) 现在返回一个 Internal 字段,显示网络是否是内部网络。
  • GET /networks/(name) 现在返回一个 EnableIPv6 字段,显示网络是否启用了 IPv6。
  • POST /containers/(name)/update 现在支持更新容器的重启策略。
  • POST /networks/create 现在支持通过设置 EnableIPv6 字段来在网络上启用 IPv6(通过 label 执行此操作将不再起作用)。
  • GET /info 现在返回 CgroupDriver 字段,显示守护进程正在使用的 cgroup 驱动程序;cgroupfssystemd
  • GET /info 现在返回 KernelMemory 字段,显示是否支持“内核内存限制”。
  • 如果内核版本 >= 4.3 并且支持 pids cgroup,POST /containers/create 现在接受 PidsLimit 字段。
  • 如果内核版本 >= 4.3 并且支持 pids cgroup,GET /containers/(id or name)/stats 现在返回 pids_stats
  • POST /containers/create 现在允许您覆盖用户命名空间重映射并使用容器的特权选项。
  • POST /containers/create 现在允许为命名卷指定 nocopy,这会禁用从容器路径到卷的自动复制。
  • POST /auth 现在在注册表支持时返回 IdentityToken
  • POST /containers/create 中同时指定 HostnameDomainname 字段将导致容器的主机名被设置为 Hostname,而不是 Hostname.Domainname
  • GET /volumes 现在支持更多过滤器,新增的过滤器包括 namedriver
  • GET /containers/(id or name)/logs 现在接受一个 details 查询参数,以便将提供给容器 LogOpts 的额外属性(例如环境变量和 labels)与日志一起流式传输。
  • POST /images/load 现在以 JSON 流形式返回进度信息,并有一个 quiet 查询参数来抑制进度详情。

v1.22 API 变更

  • HostConfig.LxcConf 字段已被移除,在 POST /containers/createGET /containers/(id)/json 上不再可用。
  • POST /container/(name)/update 更新容器的资源。
  • GET /containers/json 在 Windows 上支持 isolation 过滤器。
  • GET /containers/json 现在返回容器的网络列表。
  • GET /info 现在返回 ArchitectureOSType 字段,提供关于守护进程运行所在的主机架构和操作系统类型的信息。
  • GET /networks/(name) 现在返回连接到网络的每个容器的 Name 字段。
  • GET /version 现在返回采用 RFC3339Nano 格式的 BuildTime 字段,使其与 API 返回的其他日期/时间值保持一致。
  • AuthConfig 现在支持用于基于令牌的认证的 registrytoken 字段。
  • POST /containers/create 现在对 HostConfig.KernelMemory 设置了 4M 的最小值限制。
  • 通过 POST /images/(name)/push 发起的推送和通过 POST /images/create 发起的拉取,如果在推送或拉取完成之前进行 API 请求的 HTTP 连接关闭,则将会被取消。
  • POST /containers/create 现在允许设置设备的读/写速率限制(以字节/秒或 IO/秒为单位)。
  • GET /networks 现在支持按 nameidtype 进行过滤。
  • 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 配置中包含一个 options 字段,为自定义 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) 移除具有指定名称的卷。
  • VolumeDriverconfig 移至 HostConfig,以使配置可移植。
  • GET /images/(name)/json 现在返回关于镜像的 RepoTagsRepoDigests 信息。
  • config 选项现在接受 StopSignal 字段,用于指定用于杀死容器的信号。
  • GET /containers/(id)/stats 将分别针对每个接口返回网络信息。
  • HostConfig 选项现在包含 DnsOptions 字段,用于配置容器的 DNS 选项。
  • POST /build 现在可选地接受构建时变量的序列化映射。
  • GET /events 现在除了现有的 time 字段之外,还包含 timenano 字段。
  • GET /events 现在支持按镜像和容器标签进行过滤。
  • GET /info 现在列出引擎版本信息,并返回 CPUSharesCpuset 的信息。
  • GET /containers/json 将返回容器使用的镜像的 ImageID 字段。
  • POST /exec/(name)/start 现在在容器处于停止或暂停状态时将返回 HTTP 409 状态码。
  • POST /containers/create 现在在 HostConfig 中接受 KernelMemory 字段,用于指定内核内存限制。
  • GET /containers/(name)/json 现在接受 size 参数。将此参数设置为 '1' 将在 SizeRwSizeRootFs 字段中返回容器大小信息。
  • GET /containers/(name)/json 现在返回 NetworkSettings.Networks 字段,详细列出每个网络的网络设置。此字段废弃了 NetworkSettings.GatewayNetworkSettings.IPAddressNetworkSettings.IPPrefixLenNetworkSettings.MacAddress 字段;为了向后兼容性,它们仍然返回,但将在未来版本中移除。
  • GET /exec/(id)/json 现在返回 NetworkSettings.Networks 字段,详细列出每个网络的网络设置。此字段废弃了 NetworkSettings.GatewayNetworkSettings.IPAddressNetworkSettings.IPPrefixLenNetworkSettings.MacAddress 字段;为了向后兼容性,它们仍然返回,但将在未来版本中移除。
  • HostConfig 选项现在包含 OomScoreAdj 字段,用于调整“不良度”启发式算法。此启发式算法选择在内存不足的条件下 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 字段 DebugIPv4ForwardingMemoryLimitSwapLimit 现在作为布尔值返回,而不是整数。此外,该端点现在返回新的布尔值字段 CpuCfsPeriodCpuCfsQuotaOomKillDisable
  • hostConfig 选项现在接受 CpuPeriodCpuQuota 字段。
  • POST /build 接受 cpuperiodcpuquota 选项。

v1.18 API 变更

  • GET /version 现在返回 OsArchKernelVersion
  • POST /containers/createPOST /containers/(id)/start 允许设置用于容器中的 ulimit 设置。
  • GET /info 现在返回 SystemTimeHttpProxyHttpsProxyNoProxy
  • GET /images/json 添加了 RepoDigests 字段,用于包含镜像摘要信息。
  • POST /build 现在可以设置对于为构建创建的所有容器的资源约束。
  • CgroupParent 可以在 host config 中传递,用于在特定的 cgroup 下设置容器 cgroups。
  • POST /build 关闭 HTTP 请求会取消构建。
  • POST /containers/(id)/exec 在响应中包含 Warnings 字段。
页面选项