Engine API 版本历史
v1.49 API 变更
GET /images/{name}/json
现在支持platform
参数 (JSON 编码的 OCI Platform 类型),允许指定要检查的多平台镜像的平台。此选项与manifests
选项互斥。GET /info
现在返回FirewallBackend
字段,其中包含关于守护程序防火墙配置的信息。- 已弃用:在 API v1.49 中,GET /info 响应中
RegistryConfig
结构体内的AllowNondistributableArtifactsCIDRs
和AllowNondistributableArtifactsHostnames
字段已省略。 - 已弃用:GET /info 端点中的
ContainerdCommit.Expected
、RuncCommit.Expected
和InitCommit.Expected
字段在 API v1.48 中已弃用,并在 API v1.49 中被省略。
v1.48 API 变更
- 已弃用: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 版本中将留空或被省略。用户应转而使用
errorDetail
和progressDetail
字段中的信息。 - 已弃用:守护程序配置中的 "allow-nondistributable-artifacts" 已弃用并默认启用。GET /info 响应中
RegistryConfig
结构体内的AllowNondistributableArtifactsCIDRs
和AllowNondistributableArtifactsHostnames
字段现在将始终为null
,并在 API v1.49 中被省略。 - 已弃用:GET /info 响应中的
BridgeNfIptables
和BridgeNfIp6tables
字段现在始终为false
,并在 API v1.49 中被省略。netfilter 模块现在按需加载,不再在守护程序启动期间加载,这使得这些字段已过时。 GET /images/{name}/history
现在支持platform
参数 (JSON 编码的 OCI Platform 类型),允许指定要显示历史记录的平台。POST /images/{name}/load
和GET /images/{name}/get
现在支持platform
参数 (JSON 编码的 OCI Platform 类型),允许指定要加载/保存的平台。不传递此参数将导致加载/保存完整的多平台镜像。- 当容器范围内的
Config.VolumeDriver
选项与通过Mounts
定义的卷结合使用时,POST /containers/create 现在在响应中包含一个警告,因为VolumeDriver
选项对这些卷无效。此警告以前由 CLI 生成,但现在移至守护程序,以便其他客户端也能收到此警告。 POST /containers/create
现在支持类型为image
的Mount
,用于在容器内挂载镜像。- 已弃用:GET /info 端点中的
ContainerdCommit.Expected
、RuncCommit.Expected
和InitCommit.Expected
字段已弃用,并将在 API v1.49 中被省略。 - 对于 eth0,
HostConfig
中的Sysctls
(顶级--sysctl
设置)不再迁移到DriverOpts
,如 v1.46 的变更中所述。 GET /images/json
和GET /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}/connect
和POST /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/prune
将keep-bytes
重命名为reserved-space
,并且现在支持额外的清理参数max-used-space
和min-free-space
。GET /containers/json
现在返回ImageManifestDescriptor
字段,与 /containers/{name}/json 中的同名字段匹配。仅当守护程序提供了多平台镜像存储时,此字段才会填充。
v1.47 API 变更
GET /images/json
响应现在包含Manifests
字段,其中包含镜像索引中包含的子清单信息。这包括平台特定的清单和构建证明等。仅当请求同时将manifests
查询参数设置为true
时,此新字段才会填充。警告:这是实验性功能,可能随时更改,且不保证向后兼容性。- 当守护程序启动时禁用了
bridge-nf-call-iptables
或bridge-nf-call-ip6tables
时,GET /info 不再包含警告。现在尝试在需要时加载br_netfilter
模块,这使得这些警告不再准确。此更改未进行版本控制,如果守护程序具有此补丁,则会影响所有 API 版本。
v1.46 API 变更
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
现在支持 imagecreate
事件,当构建新镜像时会发出此事件,无论是否对其进行了标记。
`GET /images/{name}/json` 响应中已弃用的 Config 字段
此端点(用于 "image inspect")返回的 Config
字段包含额外字段,这些字段不属于镜像的配置,也不属于 Docker Image Spec 和 OCI 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/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
过滤器。这接受一个时间戳,并列出在此之前创建的所有镜像。<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.ReadOnlyNonRecursive
和BindOptions.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/create
和POST /networks/{id}/connect
现在将捕获以前只在POST /containers/{id}/start
期间返回的验证错误。这些端点还将返回它们找到的全部验证错误集合,而不是只返回第一个错误。请注意,此更改是非版本化的,并且应用于所有 API 版本。POST /services/create
和POST /services/{id}/update
现在在ContainerSpec.Privileges
对象中接受Seccomp
和AppArmor
字段。这允许在 Swarm 服务中配置 Seccomp 和 AppArmor 的一些设置。- 在
POST /containers/create
的NetworkSettings.EndpointSettings
中,以及在POST /networks/{id}/connect
的EndpointConfig
中,已添加了一个新的端点特定MacAddress
字段。在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
属性。- 在
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 变更
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
现在在全局启用此选项时,在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 版本。在使用
fromSrc
选项从存档导入镜像时,POST /images/create
现在支持通过platform
查询参数传递的操作系统和架构。以前,只使用了操作系统,而忽略了架构。如果未设置platform
选项,则使用主机的操作系统和架构作为默认值。此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。如果提供了无效的
condition
,POST /containers/{id}/wait
端点现在返回400
状态码(在 API 1.30 及以上版本中)。已从
POST /containers/create
和POST /containers/{id}/update
端点移除KernelMemory
字段,在 API 版本v1.42
及以上版本中,设置任何值都将被忽略。旧的 API 版本仍然接受此字段,但可能不会生效,具体取决于所使用的内核版本和 OCI 运行时。如果未设置
KernelMemory
和KernelMemoryTCP
,则GET /containers/{id}/json
现在会省略它们。如果主机或主机配置(如果使用 cgroups v2)不支持
KernelMemory
和KernelMemoryTCP
,则GET /info
现在会省略它们。GET /_ping
和HEAD /_ping
现在默认返回Builder-Version
。此标头包含要使用的默认构建器,并且是守护进程广告的建议。但是,客户端可以选择使用哪个构建器。Linux 上的默认值是版本 "2" (BuildKit),但守护进程可以配置为推荐版本 "1" (经典构建器)。Windows 尚不支持 BuildKit for native Windows images,并使用 "1" (经典构建器) 作为默认值。
此更改未进行版本控制,并且如果守护进程打了此补丁,则会影响所有 API 版本。
GET /_ping
和HEAD /_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}/logs
和GET /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 /volumes
和GET /system/df
返回的卷信息现在可以包含一个ClusterVolume
,如果该卷是集群卷(需要守护进程是 Swarm 管理节点)。卷类型,由 Added new
ClusterVolume
字段返回添加了新的
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
)。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 变更
GET /events
现在在资源清除完成后返回prune
事件。为container
,network
,volume
,image
, 和builder
返回清除事件,并带有一个reclaimed
属性,指示回收的空间量(以字节为单位)。GET /info
现在返回一个CgroupVersion
字段,包含 cgroup 版本。GET /info
现在返回一个DefaultAddressPools
字段,包含本地网络的自定义默认地址池列表,可以在daemon.json
文件或--default-address-pool
dockerd 选项中指定。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
现在在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
现在可以将ReplicatedJob
或GlobalJob
作为ServiceSpec
中的Mode
包含进来。GET /services/{id}
现在可以将ReplicatedJob
或GlobalJob
作为ServiceSpec
中的Mode
包含进来。POST /services/create
现在接受ReplicatedJob
或GlobalJob
作为ServiceSpec
中的Mode
。POST /services/{id}/update
接受更新ServiceSpec.Mode
中ReplicatedJob
对象的字段。但是,服务模式仍然无法更改。GET /services
现在包含模式为ReplicatedJob
或GlobalJob
的服务的JobStatus
。GET /services/{id}
现在包含模式为ReplicatedJob
或GlobalJob
的服务的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 变更
/_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
现在包含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/create
和POST /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 变更
- 如果守护进程无法获取信息,
GET /info
现在对KernelVersion
和OperatingSystem
返回空字符串,而不是<unknown>
。 - 如果已应用许可证到守护进程,
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
字段,其中包含连接到“可附加的”Swarm 范围网络的非服务容器的ContainerID
。
v1.37 API 变更
POST /containers/create
和POST /services/create
现在支持暴露 SCTP 端口。POST /configs/create
和POST /configs/{id}/create
现在接受一个Templating
驱动程序。GET /configs
和GET /configs/{id}
现在返回 Config 的Templating
驱动程序。POST /secrets/create
和POST /secrets/{id}/create
现在接受一个Templating
驱动程序。GET /secrets
和GET /secrets/{id}
现在返回 Secret 的Templating
驱动程序。
v1.36 API 变更
Get /events
现在在 exec 进程终止时返回exec_die
事件。
v1.35 API 变更
POST /services/create
和POST /services/(id)/update
现在接受 Container 规范上的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
现在在容器移除失败的情况下也返回。在响应 JSON 中添加了一个名为Error
的结构体指针,用于指示失败。如果Error
为null
,则容器移除成功;否则,可以通过Error.Message
字段获取指示容器移除失败原因的错误消息文本。
v1.33 API 变更
GET /events
现在支持过滤 4 种更多类型的事件:config
、node
、secret
和service
。
v1.32 API 变更
POST /images/create
现在接受os[/arch[/variant]]
形式的platform
参数。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)
现在在 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(local
、swarm
或global
)过滤网络。POST /session
是一个新的端点,可用于在客户端和守护进程之间运行交互式长时间运行协议。此端点是实验性的,仅在守护进程启用实验性功能时可用。GET /images/(name)/get
现在包含一个ImageMetadata
字段,其中包含引擎本地的镜像元数据,不属于镜像配置。- 当
TaskTemplate.Runtime
设置为plugin
时,POST /services/create
现在接受一个PluginSpec
。 GET /events
现在支持用户创建、更新或删除 config 时发出的 config 事件create
、update
和remove
。GET /volumes/
和GET /volumes/{name}
现在返回一个CreatedAt
字段,其中包含卷的创建日期/时间。如果卷的创建日期/时间未知,则省略此字段。对于 scope 为 "global" 的卷,此字段表示卷的本地 实例 的创建日期/时间,可能与同一卷在不同节点上的实例有所不同。GET /system/df
现在为Volumes
返回一个CreatedAt
字段。有关此字段的描述,请参阅/volumes/
端点。
v1.30 API 变更
GET /info
现在返回支持的日志驱动程序列表,包括插件。- 如果节点在 Swarm 中,
GET /info
和GET /swarm
现在返回集群范围的 Swarm CA 信息:集群根 CA 证书,以及集群 TLS 叶证书颁发者的主题和公钥。它还显示了期望的 CA 签名证书(如果作为规范的一部分提供了)。 POST /build/
现在(非静默时)在 JSON 输出流中为每个生成的镜像生成一个带有负载types.BuildResult
的Aux
消息。最后一个此类消息将引用构建产生的镜像。- 如果节点是 Swarm 的一部分,
GET /nodes
和GET /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/create
和POST /services/(id or name)/update
现在接受Platforms
字段作为 ServicePlacement
的一部分,允许指定服务支持的平台。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 变更
DELETE /networks/(name)
现在允许移除 ingress 网络,即用于提供路由网格的网络。POST /networks/create
现在支持通过指定布尔字段Ingress
来创建 ingress 网络。目前仅在使用 overlay 网络驱动程序时支持此功能。GET /networks/(name)
现在返回一个Ingress
字段,显示网络是否是 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
查询参数,用于将默认值合并到 Service 检查输出中。POST /containers/prune
、POST /images/prune
、POST /volumes/prune
和POST /networks/prune
现在支持label
过滤器,用于根据 label 过滤容器、镜像、卷或网络。label 过滤器的格式可以是label=<key>
/label=<key>=<value>
以移除具有指定 labels 的对象,或label!=<key>
/label!=<key>=<value>
以移除没有指定 labels 的对象。POST /services/create
现在接受Privileges
作为ContainerSpec
的一部分。Privileges 目前包括CredentialSpec
和SELinuxContext
。
v1.28 API 变更
POST /containers/create
现在包含一个Consistency
字段,用于指定每个Mount
的一致性级别,可能的值有default
、consistent
、cached
或delegated
。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
现在支持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
现在接受FailureAction
的rollback
值。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
现在在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
字段。此字段用于使用预安装在主机上的基础镜像(RootFS.Type
为layers+base
)的 Windows 镜像,这已不再支持,因此RootFS.BaseLayer
字段已被移除。GET /info
现在返回Isolation
。POST /containers/create
现在在 HostConfig 中接受AutoRemove
,以便在容器进程退出时在守护进程端启用容器的自动移除。GET /containers/json
和GET /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
字段,该字段替换了Binds
、Volumes
和Tmpfs
。注意:Binds
、Volumes
和Tmpfs
仍然可用,并且可以与Mounts
结合使用。POST /build
现在在开始构建之前对Dockerfile
进行初步验证,如果语法不正确则返回错误。请注意,此更改是未进行版本控制的,并应用于所有 API 版本。POST /build
接受cachefrom
参数以指定用于构建缓存的镜像。GET /networks/
端点现在正确返回所有网络的列表,而不是在提供了尾部斜杠但没有提供name
或id
时返回默认网络。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/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
,它是已 exec 进程的系统进程 ID。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
时为实时 (rt) 任务分配 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
参数,该参数在容器中分配伪终端 (pseudo-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
现在在 ServicesTaskSpec.Placement.Constraints
字段中支持node.platform.arch
和node.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
现在接受id
或name
来识别要更新的节点。GET /images/json
现在支持reference
过滤器。GET /secrets
返回有关 Secrets 的信息。POST /secrets/create
创建 Secret。DELETE /secrets/{id}
移除 Secretid
。GET /secrets/{id}
返回有关 Secretid
的信息。POST /secrets/{id}/update
更新 Secretid
。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
现在支持按网络名称或 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/<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(通过 label 执行此操作将不再起作用)。GET /info
现在返回CgroupDriver
字段,显示守护进程正在使用的 cgroup 驱动程序;cgroupfs
或systemd
。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
中同时指定Hostname
和Domainname
字段将导致容器的主机名被设置为Hostname
,而不是Hostname.Domainname
。 GET /volumes
现在支持更多过滤器,新增的过滤器包括name
和driver
。GET /containers/(id or name)/logs
现在接受一个details
查询参数,以便将提供给容器LogOpts
的额外属性(例如环境变量和 labels)与日志一起流式传输。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
现在支持用于基于令牌的认证的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 配置中包含一个 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)
移除具有指定名称的卷。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 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
和CpuQuota
字段。POST /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
可以在 host config 中传递,用于在特定的 cgroup 下设置容器 cgroups。POST /build
关闭 HTTP 请求会取消构建。POST /containers/(id)/exec
在响应中包含Warnings
字段。