引擎API版本历史
v1.47 API 变更
GET /images/json响应现在包括Manifests字段,该字段包含有关图像索引中包含的子清单的信息。这包括特定平台的清单和构建证明等内容。只有在请求还将manifests查询参数设置为true时,才会填充此新字段。 警告:这是实验性的,可能会随时更改,且不保证向后兼容性。
v1.46 API 变更
GET /info现在包含一个Containerd字段,其中包含有关守护程序用于运行容器和插件的 containerd API 套接字位置和 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 及以下,顶层的--sysctl设置对于eth0将在可能的情况下迁移到DriverOpts。 此自动迁移将在未来的版本中移除。GET /containers/json现在返回容器的注释。POST /images/{name}/push现在支持一个platform参数(JSON 编码的 OCI 平台类型),该参数允许从多平台镜像中选择特定的平台清单。POST /containers/create现在接受Options作为HostConfig.Mounts.TmpfsOptions的一部分,用于设置 tmpfs 挂载的选项。POST /services/create现在接受Options作为ContainerSpec.Mounts.TmpfsOptions的一部分,用于设置 tmpfs 挂载的选项。GET /events现在支持create事件,该事件在构建新镜像时触发,无论是否被标记。
在GET /images/{name}/json响应中已弃用的配置字段
此端点返回的Config字段(用于“镜像检查”)返回了不属于镜像配置的额外字段,也不属于Docker 镜像规范和OCI 镜像规范。
由于实现细节,响应中包含了这些额外的字段,其中用于响应的api/types.ImageInspec类型使用了container.Config类型。
该 container.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将始终假定is-automated字段的值为false。因此,搜索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过滤器。这接受一个时间戳,并列出在此之前创建的所有镜像。可以是 Unix 时间戳、日期格式的时间戳,或相对于守护进程机器时间的 Go 持续时间字符串(例如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过滤器。 Docker Hub 的搜索 API 已弃用is_automated字段。 因此,搜索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现在接受ContainerSpec.Privileges对象中的Seccomp和AppArmor字段。这允许在 Swarm 服务中对 Seccomp 和 AppArmor 进行一些配置。- 一个新的特定于端点的
MacAddress字段已添加到NetworkSettings.EndpointSettings中 在POST /containers/create上,以及在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现在在Runtimes中包含status属性。- 一个新字段名为
DNSNames,包含所有非完全限定的DNS名称 容器在特定网络上承担的角色已被添加到GET /containers/{name:.*}/json。 - 在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字段(之前是0001-01-01T00:00:00Z) 如果图像配置中缺少Created字段。
v1.43 API 变更
POST /containers/create现在接受Annotations作为HostConfig的一部分。 可以用于将任意元数据附加到容器上,这些元数据在容器启动时也会传递给运行时。GET /images/json不再在未标记的镜像的RepoTags和RepoDigests中包含硬编码的和: 。在这种情况下,将生成空数组。@ 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 变更
移除了
GET /system/df端点上的BuilderSize字段。该字段在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)。此更改未进行版本控制,如果守护程序有此补丁,则会影响所有API版本。现在,
POST /images/create支持在使用fromSrc选项从存档导入镜像时,通过platform查询参数传递的操作系统和架构。以前,只使用操作系统,而忽略了架构。如果没有设置platform选项,则默认使用主机的操作系统和架构。此更改未进行版本控制,如果守护程序应用了此补丁,则会影响所有 API 版本。如果提供了无效的
condition(在API 1.30及以上版本中),POST /containers/{id}/wait端点现在会返回一个400状态码。从
POST /containers/create和POST /containers/{id}/update端点中移除了KernelMemory字段,在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"(BuildKit),但可以将守护程序配置为推荐版本"1"(经典构建器)。Windows尚未支持用于原生Windows镜像的BuildKit,并使用"1"(经典构建器)作为默认值。
此更改未进行版本控制,如果守护程序应用了此补丁,将影响所有API版本。
GET /_ping和HEAD /_ping现在返回一个Swarm头信息,这使得客户端能够检测守护进程是否启用了 Swarm,而无需调用额外的端点。 此更改未进行版本控制,如果守护进程应用了此补丁,则会影响所有 API 版本。客户端必须将此头信息视为“可选的”,如果头信息不存在,则回退到使用其他端点来获取此信息。Swarm头部可以包含以下值之一:- "inactive"
- "pending"
- "error"
- "locked"
- "active/worker"
- "active/manager"
POST /containers/create现在为 Windows 容器接受HostConfig.Resources.Devices.PathOnHost中的新语法。除了现有的class/语法外,现在也识别。对特定:// 值的支持取决于底层实现和 Windows 版本。此更改未进行版本控制,如果守护程序应用了此补丁,则会影响所有 API 版本。GET /containers/{id}/attach,GET /exec/{id}/start,GET /containers/{id}/logsGET /services/{id}/logs和GET /tasks/{id}/logs现在在向客户端发送多路复用的 stdout/stderr 流时,将 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字段,用于“build-cache”记录, 该字段包含构建缓存记录的父ID列表。由
GET /volumes/{name}、GET /volumes和GET /system/df返回的卷信息现在可以包含一个ClusterVolume,如果该卷是集群卷(需要守护进程是Swarm管理器)。由
Added newClusterVolume`字段返回的Volume类型添加了一个新的
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中,已被弃用的
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现在返回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查询参数。当设置时,守护进程会检查请求的镜像是否存在于本地镜像缓存中,并且具有给定的操作系统和架构,否则返回
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现在可能包含ReplicatedJob或GlobalJob作为ServiceSpec中的Mode。GET /services/{id}现在可能包含ReplicatedJob或GlobalJob作为ServiceSpec中的Mode。POST /services/create现在接受ReplicatedJob 或GlobalJob作为Mode在ServiceSpec中。POST /services/{id}/update接受更新ServiceSpec.Mode中的ReplicatedJob对象的字段。但是,服务模式仍然无法更改。GET /services现在包括具有模式ReplicatedJob或GlobalJob的服务上的JobStatus。GET /services/{id}现在包括在模式为ReplicatedJob或GlobalJob的服务上的JobStatus。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 变更
/_ping端点现在可以使用GET或HEAD请求访问。 当使用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现在在ContainerSpec.Configs中包含Runtime作为选项POST /services/{id}/update现在在ContainerSpec.Configs中包含Runtime作为选项GET /tasks现在返回Sysctls作为ContainerSpec的一部分。GET /tasks/{id}现在返回Sysctls作为ContainerSpec的一部分。GET /networks现在支持一个dangling过滤器类型。当设置为true(或1)时,该端点返回所有未被容器使用的网络。当 设置为false(或0)时,仅返回被一个或多个容器使用的网络。GET /nodes现在支持一种过滤器类型node.label过滤器,用于根据节点的标签过滤节点。标签过滤器的格式为node.label=/node.label=以返回具有指定标签的节点,或= node.label!=/node.label!=以返回没有指定标签的节点。= POST /containers/create现在在使用 Fluentd 日志驱动时,接受HostConfig.LogConfig.Config中的fluentd-async选项。此选项弃用了fluentd-async-connect选项,后者仍然有效,但将在未来的版本中移除。鼓励用户从现在开始使用fluentd-async选项。此更改未进行版本控制,如果守护程序应用了此补丁,将影响所有 API 版本。POST /containers/create现在在使用 Fluentd 日志驱动时,接受HostConfig.LogConfig.Config中的fluentd-request-ack选项。如果启用,Fluentd 日志驱动将发送带有唯一 ID 的块选项。服务器将响应确认。此选项提高了消息传输的可靠性。此更改未进行版本控制,如果守护程序应用了此补丁,则会影响所有 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/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现在在使用 BuildKit 模式时接受outputs键来配置构建输出。
V1.39 API 变更
GET /info现在返回一个空字符串,而不是,用于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属性来设置执行进程的工作目录,独立于容器的工作目录。Get /version现在返回一个Platform.Name字段,使用 Moby 作为基础的产品可以利用该字段返回有关平台的信息。Get /version现在返回一个Components字段,该字段可用于返回有关使用的组件的信息。关于引擎本身的信息现在作为一个“组件”版本包含在内,并包含来自顶级Version、GitCommit、APIVersion、MinAPIVersion、GoVersion、Os、Arch、BuildTime、KernelVersion和Experimental字段的所有信息。今后,Components部分的信息将优先于其顶级对应部分。
v1.34 API 变更
POST /containers/(name)/wait?condition=removed现在在容器移除失败的情况下也会返回。在响应JSON中添加了一个名为Error的结构指针,以指示失败。如果Error为null,则容器移除成功,否则可以从Error.Message字段中获取指示容器移除失败原因的错误消息。
v1.33 API 变更
GET /events现在支持过滤更多四种类型的事件: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。如果存在具有给定name的网络和具有给定id的网络,现在将删除具有给定id的网络。此更改未进行版本控制,如果守护程序应用了此补丁,则会影响所有API版本。
v1.31 API 变更
DELETE /secrets/(name)现在在秘密不存在时返回状态码404而不是500。POST /secrets/create现在在创建已存在的秘密时返回状态码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设置为plugin时GET /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 CA 信息,如果节点在 swarm 中:集群根 CA 证书,以及集群 TLS 叶子证书颁发者的主题和公钥。如果规范中提供了所需的 CA 签名证书,它也会显示出来。POST /build/现在(当不静默时)会在 JSON 输出流中生成一个Aux消息,其有效载荷为types.BuildResult,用于每个生成的镜像。最后的此类消息将引用构建生成的镜像。GET /nodes和GET /nodes/{id}现在返回关于 swarm TLS 信息的额外信息,如果节点是 swarm 的一部分:受信任的根 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现在支持网络移除事件,该事件在用户移除一个群组范围的网络时触发GET /events现在支持一种过滤器类型scope,其中支持的值可以是 swarm 和 localPUT /containers/(name)/archive现在接受一个copyUIDGID参数,以允许将 UID/GID 映射复制到目标文件或目录。
v1.29 API 变更
DELETE /networks/(name)现在允许移除入口网络,即用于提供路由网格的网络。POST /networks/create现在支持通过指定一个Ingress布尔字段来创建入口网络。目前,这仅在使用了覆盖网络驱动时支持。GET /networks/(name)现在返回一个Ingress字段,显示网络是否为入口网络。GET /networks/现在支持一个scope过滤器,用于根据网络模式(swarm、global或local)过滤网络。POST /containers/create,POST /service/create和POST /services/(id or name)/update现在接受StartPeriod字段作为HealthConfig的一部分,允许指定一个时间段,在此期间即使健康检查未通过,容器也不应被视为不健康。GET /services/(id)现在接受一个insertDefaults查询参数,用于将默认值合并到服务检查输出中。POST /containers/prune,POST /images/prune,POST /volumes/prune, 和POST /networks/prune现在支持一个label过滤器,用于根据标签过滤容器、镜像、卷或网络。标签过滤器的格式可以是label=/label=来移除具有指定标签的对象,或者= label!=/label!=来移除没有指定标签的对象。= POST /services/create现在接受Privileges作为ContainerSpec的一部分。当前权限包括CredentialSpec和SELinuxContext。
v1.28 API 变更
POST /containers/create现在包含一个Consistency字段,用于指定每个Mount的一致性级别,可能的值为default,consistent,cached, 或delegated。GET /containers/create现在在HostConfig中接受一个DeviceCgroupRules字段,允许为创建的容器设置自定义的设备 cgroup 规则。- 可选的查询参数
verbose用于GET /networks/(id or name)现在将列出所有服务及其所有任务,包括给定网络上的非本地任务。 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 CPUs为单位的CPU配额。POST /plugins/{name}/disable现在接受一个force查询参数,即使插件仍在使用中也可以禁用它。
v1.27 API 变更
GET /containers/(id or name)/stats现在在precpu_stats和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现在返回OsVersion(如果已填充)GET /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), 和POST /volumes/create现在返回Options字段,该字段包含创建卷时使用的驱动程序特定选项。GET /exec/(id)/json现在返回Pid,这是执行进程的系统 pid。POST /containers/prune清理已停止的容器。POST /images/prune删除未使用的镜像。POST /volumes/prune清理未使用的卷。POST /networks/prune清理未使用的网络。- 每个API响应现在都包含一个
Docker-Experimental头,指定是否启用了实验性功能(值可以是true或false)。 - 每个API响应现在都包含一个
API-Version头,指定服务器的默认API版本。 hostConfig选项现在接受字段CpuRealtimePeriod和CpuRtRuntime,以便在内核中启用CONFIG_RT_GROUP_SCHED时为实时任务分配 CPU 运行时间。GET /info响应中的SecurityOptions字段现在包括userns,如果守护进程中启用了用户命名空间。GET /nodes和GET /node/(id or name)现在返回Addr作为节点Status的一部分,这是该节点连接到管理器的地址。HostConfig字段现在包含NanoCpus,表示以 10-9 CPU 为单位的 CPU 配额。GET /info现在返回更多关于安全选项的结构化信息。HostConfig字段现在包含CpuCount,表示容器可用的 CPU 数量。仅适用于 Windows 守护进程。POST /services/create和POST /services/(id or name)/update现在接受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现在支持在服务的TaskSpec.Placement.Constraints字段中使用node.platform.arch和node.platform.os约束。GET /networks/(id or name)现在包括所有对等节点的IP和名称,适用于Swarm模式的覆盖网络。GET /plugins列出插件。POST /plugins/pull?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返回有关秘密的信息。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个适用于所有日志驱动程序的内置日志选项,mode(blocking|non-blocking), 和max-buffer-size(例如2m),这启用了一个非阻塞的日志缓冲区。POST /containers/create现在接受HostConfig.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允许您配置内核参数(sysctls)以在容器中使用。POST /containers/和/exec POST /exec/不再期望存在 "Container" 字段。此属性未被使用 并且不再由 docker 客户端发送。/start POST /containers/create/现在会验证主机名(应为有效的RFC 1123主机名)。POST /containers/create/HostConfig.PidMode字段现在接受container:,以使容器加入现有容器的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.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现在返回BuildTime字段,格式为 RFC3339Nano,以使其与 API 返回的其他日期/时间值保持一致。AuthConfig现在支持registrytoken用于基于令牌的认证POST /containers/create现在对HostConfig.KernelMemory有一个4M的最小值限制- 使用
POST /images/(name)/push发起的推送和使用POST /images/create发起的拉取 如果在推送或拉取完成之前关闭了发出API请求的HTTP连接,则将被取消。 POST /containers/create现在允许您为设备设置读写速率限制(以每秒字节数或每秒IO数为单位)。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/现在返回用户定义网络的子网信息。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现在除了现有的time字段外,还包含一个timenano字段。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字段,用于调整不良启发式算法。该启发式算法选择在内存不足情况下 OOM 杀手终止哪些进程。
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/create和POST /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字段。