Engine API version history
v1.47 API changes
Docker Engine API v1.47 documentation
GET /images/json
response now includesManifests
field, which contains information about the sub-manifests included in the image index. This includes things like platform-specific manifests and build attestations. The new field will only be populated if the request also sets themanifests
query parameter totrue
. WARNING: This is experimental and may change at any time without any backward compatibility.
v1.46 API changes
Docker Engine API v1.46 documentation
GET /info
now includes aContainerd
field containing information about the location of the containerd API socket and containerd namespaces used by the daemon to run containers and plugins.POST /containers/create
fieldNetworkingConfig.EndpointsConfig.DriverOpts
, andPOST /networks/{id}/connect
fieldEndpointsConfig.DriverOpts
, now support labelcom.docker.network.endpoint.sysctls
for setting per-interface sysctls. The value is a comma separated list of sysctl assignments, the interface name must be "IFNAME". For example, to setnet.ipv4.config.eth0.log_martians=1
, usenet.ipv4.config.IFNAME.log_martians=1
. In API versions up-to 1.46, top level--sysctl
settings foreth0
will be migrated toDriverOpts
when possible. This automatic migration will be removed in a future release.GET /containers/json
now returns the annotations of containers.POST /images/{name}/push
now supports aplatform
parameter (JSON encoded OCI Platform type) that allows selecting a specific platform manifest from the multi-platform image.POST /containers/create
now takesOptions
as part ofHostConfig.Mounts.TmpfsOptions
to set options for tmpfs mounts.POST /services/create
now takesOptions
as part ofContainerSpec.Mounts.TmpfsOptions
, to set options for tmpfs mounts.GET /events
now supports imagecreate
event that is emitted when a new image is built regardless if it was tagged or not.
Deprecated Config fields in GET /images/{name}/json
response
The Config
field returned by this endpoint (used for "image inspect") returns
additional fields that are not part of the image's configuration and not part of
the
Docker Image Spec and the
OCI Image Spec.
These additional fields are included in the response, due to an implementation detail, where the api/types.ImageInspec type used for the response is using the container.Config type.
The container.Config type is a superset of the image config, and while the image's Config is used as a template for containers created from the image, the additional fields are set at runtime (from options passed when creating the container) and not taken from the image Config.
These fields are never set (and always return the default value for the type), but are not omitted in the response when left empty. As these fields were not intended to be part of the image configuration response, they are deprecated, and will be removed from the API.
The following fields are currently included in the API response, but are not part of the underlying image's Config, and deprecated:
Hostname
Domainname
AttachStdin
AttachStdout
AttachStderr
Tty
OpenStdin
StdinOnce
Image
NetworkDisabled
(already omitted unless set)MacAddress
(already omitted unless set)StopTimeout
(already omitted unless set)
POST /services/create
andPOST /services/{id}/update
now support OomScoreAdj
v1.45 API changes
Docker Engine API v1.45 documentation
POST /containers/create
now supportsVolumeOptions.Subpath
which allows a subpath of a named volume to be mounted.POST /images/search
will always assume afalse
value for theis-automated
field. Consequently, searching foris-automated=true
will yield no results, whileis-automated=false
will be a no-op.GET /images/{name}/json
no longer includes theContainer
andContainerConfig
fields. To access image configuration, useConfig
field instead.- The
Aliases
field returned in calls toGET /containers/{name:.*}/json
no longer contains the short container ID, but instead will reflect exactly the values originally submitted to thePOST /containers/create
endpoint. The newly introducedDNSNames
should now be used instead when short container IDs are needed.
v1.44 API changes
Docker Engine API v1.44 documentation
- GET
/images/json
now accepts anuntil
filter. This accepts a timestamp and lists all images created before it. The<timestamp>
can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g.10m
,1h30m
) computed relative to the daemon machine’s time. This change is not versioned, and affects all API versions if the daemon has this patch. - The
VirtualSize
field in theGET /images/{name}/json
,GET /images/json
, andGET /system/df
responses is now omitted. Use theSize
field instead, which contains the same information. - Deprecated: The
is_automated
field in theGET /images/search
response has been deprecated and will always be set to false in the future because Docker Hub is deprecating theis_automated
field in its search API. The deprecation is not versioned, and applies to all API versions. - Deprecated: The
is-automated
filter for theGET /images/search
endpoint. Theis_automated
field has been deprecated by Docker Hub's search API. Consequently, searching foris-automated=true
will yield no results. The deprecation is not versioned, and applies to all API versions. - Read-only bind mounts are now made recursively read-only on kernel >= 5.12
with runtimes which support the feature.
POST /containers/create
,GET /containers/{id}/json
, andGET /containers/json
now supportsBindOptions.ReadOnlyNonRecursive
andBindOptions.ReadOnlyForceRecursive
to customize the behavior. POST /containers/create
now accepts aHealthConfig.StartInterval
to set the interval for health checks during the start period.GET /info
now includes aCDISpecDirs
field indicating the configured CDI specifications directories. The use of the applied setting requires the daemon to have experimental enabled, and for non-experimental daemons an empty list is always returned.POST /networks/create
now returns a 400 if theIPAMConfig
has invalid values. Note that this change is unversioned and applied to all API versions on daemon that support version 1.44.POST /networks/create
with a duplicated name now fails systematically. As such, theCheckDuplicate
field is now deprecated. Note that this change is unversioned and applied to all API versions on daemon that support version 1.44.POST /containers/create
now accepts multipleEndpointSettings
inNetworkingConfig.EndpointSettings
.POST /containers/create
andPOST /networks/{id}/connect
will now catch validation errors that were previously only returned duringPOST /containers/{id}/start
. These endpoints will also return the full set of validation errors they find, instead of returning only the first one. Note that this change is unversioned and applies to all API versions.POST /services/create
andPOST /services/{id}/update
now acceptSeccomp
andAppArmor
fields in theContainerSpec.Privileges
object. This allows some configuration of Seccomp and AppArmor in Swarm services.- A new endpoint-specific
MacAddress
field has been added toNetworkSettings.EndpointSettings
onPOST /containers/create
, and toEndpointConfig
onPOST /networks/{id}/connect
. The container-wideMacAddress
field inConfig
, onPOST /containers/create
, is now deprecated. - The field
Networks
in thePOST /services/create
andPOST /services/{id}/update
requests is now deprecated. You should instead use the fieldTaskTemplate.Networks
. - The
Container
andContainerConfig
fields in theGET /images/{name}/json
response are deprecated and will no longer be included in API v1.45. GET /info
now includesstatus
properties inRuntimes
.- A new field named
DNSNames
and containing all non-fully qualified DNS names a container takes on a specific network has been added toGET /containers/{name:.*}/json
. - The
Aliases
field returned in calls toGET /containers/{name:.*}/json
in v1.44 and older versions contains the short container ID. This will change in the next API version, v1.45. Starting with that API version, this specific value will be removed from theAliases
field such that this field will reflect exactly the values originally submitted to thePOST /containers/create
endpoint. The newly introducedDNSNames
should now be used instead. - The fields
HairpinMode
,LinkLocalIPv6Address
,LinkLocalIPv6PrefixLen
,SecondaryIPAddresses
,SecondaryIPv6Addresses
available inNetworkSettings
when callingGET /containers/{id}/json
are deprecated and will be removed in a future release. You should instead look for the default network inNetworkSettings.Networks
. GET /images/{id}/json
omits theCreated
field (previously it was0001-01-01T00:00:00Z
) if theCreated
field is missing from the image config.
v1.43 API changes
Docker Engine API v1.43 documentation
POST /containers/create
now acceptsAnnotations
as part ofHostConfig
. Can be used to attach arbitrary metadata to the container, which will also be passed to the runtime when the container is started.GET /images/json
no longer includes hardcoded<none>:<none>
and<none>@<none>
inRepoTags
andRepoDigests
for untagged images. In such cases, empty arrays will be produced instead.- The
VirtualSize
field in theGET /images/{name}/json
,GET /images/json
, andGET /system/df
responses is deprecated and will no longer be included in API v1.44. Use theSize
field instead, which contains the same information. GET /info
now includesno-new-privileges
in theSecurityOptions
string list when this option is enabled globally. This change is not versioned, and affects all API versions if the daemon has this patch.
v1.42 API changes
Docker Engine API v1.42 documentation
-
Removed the
BuilderSize
field on theGET /system/df
endpoint. This field was introduced in API 1.31 as part of an experimental feature, and no longer used since API 1.40. Use fieldBuildCache
instead to track storage used by the builder component. -
POST /containers/{id}/stop
andPOST /containers/{id}/restart
now accept asignal
query parameter, which allows overriding the container's default stop- signal. -
GET /images/json
now accepts query parametershared-size
. When settrue
, images returned will includeSharedSize
, which provides the size on disk shared with other images present on the system. -
GET /system/df
now accepts query parametertype
. When set, computes and returns data only for the specified object type. The parameter can be specified multiple times to select several object types. Supported values are:container
,image
,volume
,build-cache
. -
GET /system/df
can now be used concurrently. If a request is made while a previous request is still being processed, the request will receive the result of the already running calculation, once completed. Previously, an error (a disk usage operation is already running
) would be returned in this situation. This change is not versioned, and affects all API versions if the daemon has this patch. -
The
POST /images/create
now supports both the operating system and architecture that is passed through theplatform
query parameter when using thefromSrc
option to import an image from an archive. Previously, only the operating system was used and the architecture was ignored. If noplatform
option is set, the host's operating system and architecture as used as default. This change is not versioned, and affects all API versions if the daemon has this patch. -
The
POST /containers/{id}/wait
endpoint now returns a400
status code if an invalidcondition
is provided (on API 1.30 and up). -
Removed the
KernelMemory
field from thePOST /containers/create
andPOST /containers/{id}/update
endpoints, any value it is set to will be ignored on API versionv1.42
and up. Older API versions still accept this field, but may take no effect, depending on the kernel version and OCI runtime in use. -
GET /containers/{id}/json
now omits theKernelMemory
andKernelMemoryTCP
if they are not set. -
GET /info
now omits theKernelMemory
andKernelMemoryTCP
if they are not supported by the host or host's configuration (if cgroups v2 are in use). -
GET /_ping
andHEAD /_ping
now returnBuilder-Version
by default. This header contains the default builder to use, and is a recommendation as advertised by the daemon. However, it is up to the client to choose which builder to use.The default value on Linux is version "2" (BuildKit), but the daemon can be configured to recommend version "1" (classic Builder). Windows does not yet support BuildKit for native Windows images, and uses "1" (classic builder) as a default.
This change is not versioned, and affects all API versions if the daemon has this patch.
-
GET /_ping
andHEAD /_ping
now return aSwarm
header, which allows a client to detect if Swarm is enabled on the daemon, without having to call additional endpoints. This change is not versioned, and affects all API versions if the daemon has this patch. Clients must consider this header "optional", and fall back to using other endpoints to get this information if the header is not present.The
Swarm
header can contain one of the following values:- "inactive"
- "pending"
- "error"
- "locked"
- "active/worker"
- "active/manager"
-
POST /containers/create
for Windows containers now accepts a new syntax inHostConfig.Resources.Devices.PathOnHost
. As well as the existingclass/<GUID>
syntax,<IDType>://<ID>
is now recognised. Support for specific<IDType>
values depends on the underlying implementation and Windows version. This change is not versioned, and affects all API versions if the daemon has this patch. -
GET /containers/{id}/attach
,GET /exec/{id}/start
,GET /containers/{id}/logs
GET /services/{id}/logs
andGET /tasks/{id}/logs
now set Content-Type header toapplication/vnd.docker.multiplexed-stream
when a multiplexed stdout/stderr stream is sent to client,application/vnd.docker.raw-stream
otherwise. -
POST /volumes/create
now accepts a newClusterVolumeSpec
to create a cluster volume (CNI). This option can only be used if the daemon is a Swarm manager. The Volume response on creation now also can contain aClusterVolume
field with information about the created volume. -
The
BuildCache.Parent
field, as returned byGET /system/df
is deprecated and is now omitted. API versions before v1.42 continue to include this field. -
GET /system/df
now includes a newParents
field, for "build-cache" records, which contains a list of parent IDs for the build-cache record. -
Volume information returned by
GET /volumes/{name}
,GET /volumes
andGET /system/df
can now contain aClusterVolume
if the volume is a cluster volume (requires the daemon to be a Swarm manager). -
The
Volume
type, as returned byAdded new
ClusterVolume` fields -
Added a new
PUT /volumes{name}
endpoint to update cluster volumes (CNI). Cluster volumes are only supported if the daemon is a Swarm manager. -
GET /containers/{name}/attach/ws
endpoint now acceptsstdin
,stdout
andstderr
query parameters to only attach to configured streams.NOTE: These parameters were documented before in older API versions, but not actually supported. API versions before v1.42 continue to ignore these parameters and default to attaching to all streams. To preserve the pre-v1.42 behavior, set all three query parameters (
?stdin=1,stdout=1,stderr=1
). -
POST /containers/create
on Linux now respects theHostConfig.ConsoleSize
property. Container is immediately created with the desired terminal size and clients no longer need to set the desired size on their own. -
POST /containers/create
allow to setCreateMountpoint
for host path to be created if missing. This brings parity withBinds
-
POST /containers/create
rejects request if BindOptions|VolumeOptions|TmpfsOptions is set with a non-matching mount Type. -
POST /containers/{id}/exec
now accepts an optionalConsoleSize
parameter. It allows to set the console size of the executed process immediately when it's created. -
POST /volumes/prune
will now only prune "anonymous" volumes (volumes which were not given a name) by default. A new filter parameterall
can be set to a truth-y value (true
,1
) to get the old behavior.
v1.41 API changes
Docker Engine API v1.41 documentation
-
GET /events
now returnsprune
events after pruning resources have completed. Prune events are returned forcontainer
,network
,volume
,image
, andbuilder
, and have areclaimed
attribute, indicating the amount of space reclaimed (in bytes). -
GET /info
now returns aCgroupVersion
field, containing the cgroup version. -
GET /info
now returns aDefaultAddressPools
field, containing a list of custom default address pools for local networks, which can be specified in thedaemon.json
file or--default-address-pool
dockerd option. -
POST /services/create
andPOST /services/{id}/update
now supportsBindOptions.NonRecursive
. -
The
ClusterStore
andClusterAdvertise
fields inGET /info
are deprecated and are now omitted if they contain an empty value. This change is not versioned, and affects all API versions if the daemon has this patch. -
The
filter
(singular) query parameter, which was deprecated in favor of thefilters
option in Docker 1.13, has now been removed from theGET /images/json
endpoint. The parameter remains available when using API version 1.40 or below. -
GET /services
now returnsCapAdd
andCapDrop
as part of theContainerSpec
. -
GET /services/{id}
now returnsCapAdd
andCapDrop
as part of theContainerSpec
. -
POST /services/create
now acceptsCapAdd
andCapDrop
as part of theContainerSpec
. -
POST /services/{id}/update
now acceptsCapAdd
andCapDrop
as part of theContainerSpec
. -
GET /tasks
now returnsCapAdd
andCapDrop
as part of theContainerSpec
. -
GET /tasks/{id}
now returnsCapAdd
andCapDrop
as part of theContainerSpec
. -
GET /services
now returnsPids
inTaskTemplate.Resources.Limits
. -
GET /services/{id}
now returnsPids
inTaskTemplate.Resources.Limits
. -
POST /services/create
now acceptsPids
inTaskTemplate.Resources.Limits
. -
POST /services/{id}/update
now acceptsPids
inTaskTemplate.Resources.Limits
to limit the maximum number of PIDs. -
GET /tasks
now returnsPids
inTaskTemplate.Resources.Limits
. -
GET /tasks/{id}
now returnsPids
inTaskTemplate.Resources.Limits
. -
POST /containers/create
now accepts aplatform
query parameter in the formatos[/arch[/variant]]
.When set, the daemon checks if the requested image is present in the local image cache with the given OS and Architecture, and otherwise returns a
404
status.If the option is not set, the host's native OS and Architecture are used to look up the image in the image cache. However, if no platform is passed and the given image does exist in the local image cache, but its OS or architecture do not match, the container is created with the available image, and a warning is added to the
Warnings
field in the response, for example;WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested
-
POST /containers/create
on Linux now accepts theHostConfig.CgroupnsMode
property. Set the property tohost
to create the container in the daemon's cgroup namespace, orprivate
to create the container in its own private cgroup namespace. The per-daemon default ishost
, and can be changed by using theCgroupNamespaceMode
daemon configuration parameter. -
GET /info
now returns anOSVersion
field, containing the operating system's version. This change is not versioned, and affects all API versions if the daemon has this patch. -
GET /info
no longer returns theSystemStatus
field if it does not have a value set. This change is not versioned, and affects all API versions if the daemon has this patch. -
GET /services
now accepts query parameterstatus
. When settrue
, services returned will includeServiceStatus
, which provides Desired, Running, and Completed task counts for the service. -
GET /services
may now includeReplicatedJob
orGlobalJob
as theMode
in aServiceSpec
. -
GET /services/{id}
may now includeReplicatedJob
orGlobalJob
as theMode
in aServiceSpec
. -
POST /services/create
now acceptsReplicatedJob or
GlobalJobas the
Modein the
ServiceSpec. -
POST /services/{id}/update
accepts updating the fields of theReplicatedJob
object in theServiceSpec.Mode
. The service mode still cannot be changed, however. -
GET /services
now includesJobStatus
on Services with modeReplicatedJob
orGlobalJob
. -
GET /services/{id}
now includesJobStatus
on Services with modeReplicatedJob
orGlobalJob
. -
GET /tasks
now includesJobIteration
on Tasks spawned from a job-mode service. -
GET /tasks/{id}
now includesJobIteration
on the task if spawned from a job-mode service. -
GET /containers/{id}/stats
now accepts a query param (one-shot
) which, when used withstream=false
fetches a single set of stats instead of waiting for two collection cycles to have 2 CPU stats over a 1 second period. -
The
KernelMemory
field inHostConfig.Resources
is now deprecated. -
The
KernelMemory
field inInfo
is now deprecated. -
GET /services
now returnsUlimits
as part ofContainerSpec
. -
GET /services/{id}
now returnsUlimits
as part ofContainerSpec
. -
POST /services/create
now acceptsUlimits
as part ofContainerSpec
. -
POST /services/{id}/update
now acceptsUlimits
as part ofContainerSpec
.
v1.40 API changes
Docker Engine API v1.40 documentation
- The
/_ping
endpoint can now be accessed both usingGET
orHEAD
requests. when accessed using aHEAD
request, all headers are returned, but the body is empty (Content-Length: 0
). This change is not versioned, and affects all API versions if the daemon has this patch. Clients are recommended to try usingHEAD
, but fallback toGET
if theHEAD
requests fails. GET /_ping
andHEAD /_ping
now setCache-Control
andPragma
headers to prevent the result from being cached. This change is not versioned, and affects all API versions if the daemon has this patch.GET /services
now returnsSysctls
as part of theContainerSpec
.GET /services/{id}
now returnsSysctls
as part of theContainerSpec
.POST /services/create
now acceptsSysctls
as part of theContainerSpec
.POST /services/{id}/update
now acceptsSysctls
as part of theContainerSpec
.POST /services/create
now acceptsConfig
as part ofContainerSpec.Privileges.CredentialSpec
.POST /services/{id}/update
now acceptsConfig
as part ofContainerSpec.Privileges.CredentialSpec
.POST /services/create
now includesRuntime
as an option inContainerSpec.Configs
POST /services/{id}/update
now includesRuntime
as an option inContainerSpec.Configs
GET /tasks
now returnsSysctls
as part of theContainerSpec
.GET /tasks/{id}
now returnsSysctls
as part of theContainerSpec
.GET /networks
now supports adangling
filter type. When set totrue
(or1
), the endpoint returns all networks that are not in use by a container. When set tofalse
(or0
), only networks that are in use by one or more containers are returned.GET /nodes
now supports a filter typenode.label
filter to filter nodes based on the node.label. The format of the label filter isnode.label=<key>
/node.label=<key>=<value>
to return those with the specified labels, ornode.label!=<key>
/node.label!=<key>=<value>
to return those without the specified labels.POST /containers/create
now accepts afluentd-async
option inHostConfig.LogConfig.Config
when using the Fluentd logging driver. This option deprecates thefluentd-async-connect
option, which remains functional, but will be removed in a future release. Users are encouraged to use thefluentd-async
option going forward. This change is not versioned, and affects all API versions if the daemon has this patch.POST /containers/create
now accepts afluentd-request-ack
option inHostConfig.LogConfig.Config
when using the Fluentd logging driver. If enabled, the Fluentd logging driver sends the chunk option with a unique ID. The server will respond with an acknowledgement. This option improves the reliability of the message transmission. This change is not versioned, and affects all API versions if the daemon has this patch.POST /containers/create
,GET /containers/{id}/json
, andGET /containers/json
now supportsBindOptions.NonRecursive
.POST /swarm/init
now accepts aDataPathPort
property to set data path port number.GET /info
now returns information aboutDataPathPort
that is currently used in swarmGET /info
now returnsPidsLimit
boolean to indicate if the host kernel has PID limit support enabled.GET /info
now includesname=rootless
inSecurityOptions
when the daemon is running in rootless mode. This change is not versioned, and affects all API versions if the daemon has this patch.GET /info
now returnsnone
asCgroupDriver
when the daemon is running in rootless mode. This change is not versioned, and affects all API versions if the daemon has this patch.POST /containers/create
now acceptsDeviceRequests
as part ofHostConfig
. Can be used to set Nvidia GPUs.GET /swarm
endpoint now returns DataPathPort infoPOST /containers/create
now takesKernelMemoryTCP
field to set hard limit for kernel TCP buffer memory.GET /service
now returnsMaxReplicas
as part of thePlacement
.GET /service/{id}
now returnsMaxReplicas
as part of thePlacement
.POST /service/create
andPOST /services/(id or name)/update
now take the fieldMaxReplicas
as part of the servicePlacement
, allowing to specify maximum replicas per node for the service.POST /containers/create
on Linux now creates a container withHostConfig.IpcMode=private
by default, if IpcMode is not explicitly specified. The per-daemon default can be changed back toshareable
by usingDefaultIpcMode
daemon configuration parameter.POST /containers/{id}/update
now accepts aPidsLimit
field to tune a container's PID limit. Set0
or-1
for unlimited. Leavenull
to not change the current value.POST /build
now acceptsoutputs
key for configuring build outputs when using BuildKit mode.
V1.39 API changes
Docker Engine API v1.39 documentation
GET /info
now returns an empty string, instead of<unknown>
forKernelVersion
andOperatingSystem
if the daemon was unable to obtain this information.GET /info
now returns information about the product license, if a license has been applied to the daemon.GET /info
now returns aWarnings
field, containing warnings and informational messages about missing features, or issues related to the daemon configuration.POST /swarm/init
now accepts aDefaultAddrPool
property to set global scope default address poolPOST /swarm/init
now accepts aSubnetSize
property to set global scope networks by giving the length of the subnet masks for every such networkPOST /session
(added in V1.31 is no longer experimental. This endpoint can be used to run interactive long-running protocols between the client and the daemon.
V1.38 API changes
Docker Engine API v1.38 documentation
GET /tasks
andGET /tasks/{id}
now return aNetworkAttachmentSpec
field, containing theContainerID
for non-service containers connected to "attachable" swarm-scoped networks.
v1.37 API changes
Docker Engine API v1.37 documentation
POST /containers/create
andPOST /services/create
now supports exposing SCTP ports.POST /configs/create
andPOST /configs/{id}/create
now accept aTemplating
driver.GET /configs
andGET /configs/{id}
now return theTemplating
driver of the config.POST /secrets/create
andPOST /secrets/{id}/create
now accept aTemplating
driver.GET /secrets
andGET /secrets/{id}
now return theTemplating
driver of the secret.
v1.36 API changes
Docker Engine API v1.36 documentation
Get /events
now returnexec_die
event when an exec process terminates.
v1.35 API changes
Docker Engine API v1.35 documentation
POST /services/create
andPOST /services/(id)/update
now accepts anIsolation
field on container spec to set the Isolation technology of the containers running the service (default
,process
, orhyperv
). This configuration is only used for Windows containers.GET /containers/(name)/logs
now supports an additional query parameter:until
, which returns log lines that occurred before the specified timestamp.POST /containers/{id}/exec
now accepts aWorkingDir
property to set the work-dir for the exec process, independent of the container's work-dir.Get /version
now returns aPlatform.Name
field, which can be used by products using Moby as a foundation to return information about the platform.Get /version
now returns aComponents
field, which can be used to return information about the components used. Information about the engine itself is now included as a "Component" version, and contains all information from the top-levelVersion
,GitCommit
,APIVersion
,MinAPIVersion
,GoVersion
,Os
,Arch
,BuildTime
,KernelVersion
, andExperimental
fields. Going forward, the information from theComponents
section is preferred over their top-level counterparts.
v1.34 API changes
Docker Engine API v1.34 documentation
POST /containers/(name)/wait?condition=removed
now also also returns in case of container removal failure. A pointer to a structure namedError
added to the response JSON in order to indicate a failure. IfError
isnull
, container removal has succeeded, otherwise the test of an error message indicating why container removal has failed is available fromError.Message
field.
v1.33 API changes
Docker Engine API v1.33 documentation
GET /events
now supports filtering 4 more kinds of events:config
,node
,secret
andservice
.
v1.32 API changes
Docker Engine API v1.32 documentation
POST /images/create
now accepts aplatform
parameter in the form ofos[/arch[/variant]]
.POST /containers/create
now accepts additional values for theHostConfig.IpcMode
property. New values areprivate
,shareable
, andnone
.DELETE /networks/{id or name}
fixed issue where aname
equal to another network's name was able to mask thatid
. If both a network with the given name exists, and a network with the given id, the network with the given id is now deleted. This change is not versioned, and affects all API versions if the daemon has this patch.
v1.31 API changes
Docker Engine API v1.31 documentation
DELETE /secrets/(name)
now returns status code 404 instead of 500 when the secret does not exist.POST /secrets/create
now returns status code 409 instead of 500 when creating an already existing secret.POST /secrets/create
now accepts aDriver
struct, allowing theName
and driver-specificOptions
to be passed to store a secrets in an external secrets store. TheDriver
property can be omitted if the default (internal) secrets store is used.GET /secrets/(id)
andGET /secrets
now return aDriver
struct, containing theName
and driver-specificOptions
of the external secrets store used to store the secret. TheDriver
property is omitted if no external store is used.POST /secrets/(name)/update
now returns status code 400 instead of 500 when updating a secret's content which is not the labels.POST /nodes/(name)/update
now returns status code 400 instead of 500 when demoting last node fails.GET /networks/(id or name)
now takes an optional query parameterscope
that will filter the network based on the scope (local
,swarm
, orglobal
).POST /session
is a new endpoint that can be used for running interactive long-running protocols between client and the daemon. This endpoint is experimental and only available if the daemon is started with experimental features enabled.GET /images/(name)/get
now includes anImageMetadata
field which contains image metadata that is local to the engine and not part of the image config.POST /services/create
now accepts aPluginSpec
whenTaskTemplate.Runtime
is set toplugin
GET /events
now supports config eventscreate
,update
andremove
that are emitted when users create, update or remove a configGET /volumes/
andGET /volumes/{name}
now return aCreatedAt
field, containing the date/time the volume was created. This field is omitted if the creation date/time for the volume is unknown. For volumes with scope "global", this field represents the creation date/time of the local instance of the volume, which may differ from instances of the same volume on different nodes.GET /system/df
now returns aCreatedAt
field forVolumes
. Refer to the/volumes/
endpoint for a description of this field.
v1.30 API changes
Docker Engine API v1.30 documentation
GET /info
now returns the list of supported logging drivers, including plugins.GET /info
andGET /swarm
now returns the cluster-wide swarm CA info if the node is in a swarm: the cluster root CA certificate, and the cluster TLS leaf certificate issuer's subject and public key. It also displays the desired CA signing certificate, if any was provided as part of the spec.POST /build/
now (when not silent) produces anAux
message in the JSON output stream with payloadtypes.BuildResult
for each image produced. The final such message will reference the image resulting from the build.GET /nodes
andGET /nodes/{id}
now returns additional information about swarm TLS info if the node is part of a swarm: the trusted root CA, and the issuer's subject and public key.GET /distribution/(name)/json
is a new endpoint that returns a JSON output stream with payloadtypes.DistributionInspect
for an image name. It includes a descriptor with the digest, and supported platforms retrieved from directly contacting the registry.POST /swarm/update
now accepts 3 additional parameters as part of the swarm spec's CA configuration; the desired CA certificate for the swarm, the desired CA key for the swarm (if not using an external certificate), and an optional parameter to force swarm to generate and rotate to a new CA certificate/key pair.POST /service/create
andPOST /services/(id or name)/update
now take the fieldPlatforms
as part of the servicePlacement
, allowing to specify platforms supported by the service.POST /containers/(name)/wait
now accepts acondition
query parameter to indicate which state change condition to wait for. Also, response headers are now returned immediately to acknowledge that the server has registered a wait callback for the client.POST /swarm/init
now accepts aDataPathAddr
property to set the IP-address or network interface to use for data trafficPOST /swarm/join
now accepts aDataPathAddr
property to set the IP-address or network interface to use for data trafficGET /events
now supports service, node and secret events which are emitted when users create, update and remove service, node and secretGET /events
now supports network remove event which is emitted when users remove a swarm scoped networkGET /events
now supports a filter typescope
in which supported value could be swarm and localPUT /containers/(name)/archive
now accepts acopyUIDGID
parameter to allow copy UID/GID maps to dest file or dir.
v1.29 API changes
Docker Engine API v1.29 documentation
DELETE /networks/(name)
now allows to remove the ingress network, the one used to provide the routing-mesh.POST /networks/create
now supports creating the ingress network, by specifying anIngress
boolean field. As of now this is supported only when using the overlay network driver.GET /networks/(name)
now returns anIngress
field showing whether the network is the ingress one.GET /networks/
now supports ascope
filter to filter networks based on the network mode (swarm
,global
, orlocal
).POST /containers/create
,POST /service/create
andPOST /services/(id or name)/update
now takes the fieldStartPeriod
as a part of theHealthConfig
allowing for specification of a period during which the container should not be considered unhealthy even if health checks do not pass.GET /services/(id)
now accepts aninsertDefaults
query-parameter to merge default values into the service inspect output.POST /containers/prune
,POST /images/prune
,POST /volumes/prune
, andPOST /networks/prune
now support alabel
filter to filter containers, images, volumes, or networks based on the label. The format of the label filter could belabel=<key>
/label=<key>=<value>
to remove those with the specified labels, orlabel!=<key>
/label!=<key>=<value>
to remove those without the specified labels.POST /services/create
now acceptsPrivileges
as part ofContainerSpec
. Privileges currently includeCredentialSpec
andSELinuxContext
.
v1.28 API changes
Docker Engine API v1.28 documentation
POST /containers/create
now includes aConsistency
field to specify the consistency level for eachMount
, with possible valuesdefault
,consistent
,cached
, ordelegated
.GET /containers/create
now takes aDeviceCgroupRules
field inHostConfig
allowing to set custom device cgroup rules for the created container.- Optional query parameter
verbose
forGET /networks/(id or name)
will now list all services with all the tasks, including the non-local tasks on the given network. GET /containers/(id or name)/attach/ws
now returns WebSocket in binary frame format for API version >= v1.28, and returns WebSocket in text frame format for API version< v1.28, for the purpose of backward-compatibility.GET /networks
is optimised only to return list of all networks and network specific information. List of all containers attached to a specific network is removed from this API and is only available using the network specificGET /networks/{network-id}
.GET /containers/json
now supportspublish
andexpose
filters to filter containers that expose or publish certain ports.POST /services/create
andPOST /services/(id or name)/update
now accept theReadOnly
parameter, which mounts the container's root filesystem as read only.POST /build
now acceptsextrahosts
parameter to specify a host to ip mapping to use during the build.POST /services/create
andPOST /services/(id or name)/update
now accept arollback
value forFailureAction
.POST /services/create
andPOST /services/(id or name)/update
now accept an optionalRollbackConfig
object which specifies rollback options.GET /services
now supports amode
filter to filter services based on the service mode (eitherglobal
orreplicated
).POST /containers/(name)/update
now supports updatingNanoCpus
that represents CPU quota in units of 10-9 CPUs.POST /plugins/{name}/disable
now accepts aforce
query-parameter to disable a plugin even if still in use.
v1.27 API changes
Docker Engine API v1.27 documentation
GET /containers/(id or name)/stats
now includes anonline_cpus
field in bothprecpu_stats
andcpu_stats
. If this field isnil
then for compatibility with older daemons the length of the correspondingcpu_usage.percpu_usage
array should be used.
v1.26 API changes
Docker Engine API v1.26 documentation
POST /plugins/(plugin name)/upgrade
upgrade a plugin.
v1.25 API changes
Docker Engine API v1.25 documentation
- The API version is now required in all API calls. Instead of just requesting, for example, the URL
/containers/json
, you must now request/v1.25/containers/json
. GET /version
now returnsMinAPIVersion
.POST /build
acceptsnetworkmode
parameter to specify network used during build.GET /images/(name)/json
now returnsOsVersion
if populatedGET /images/(name)/json
no longer contains theRootFS.BaseLayer
field. This field was used for Windows images that used a base-image that was pre-installed on the host (RootFS.Type
layers+base
), which is no longer supported, and theRootFS.BaseLayer
field has been removed.GET /info
now returnsIsolation
.POST /containers/create
now takesAutoRemove
in HostConfig, to enable auto-removal of the container on daemon side when the container's process exits.GET /containers/json
andGET /containers/(id or name)/json
now return"removing"
as a value for theState.Status
field if the container is being removed. Previously, "exited" was returned as status.GET /containers/json
now acceptsremoving
as a valid value for thestatus
filter.GET /containers/json
now supports filtering containers byhealth
status.DELETE /volumes/(name)
now accepts aforce
query parameter to force removal of volumes that were already removed out of band by the volume driver plugin.POST /containers/create/
andPOST /containers/(name)/update
now validates restart policies.POST /containers/create
now validates IPAMConfig in NetworkingConfig, and returns error for invalid IPv4 and IPv6 addresses (--ip
and--ip6
indocker create/run
).POST /containers/create
now takes aMounts
field inHostConfig
which replacesBinds
,Volumes
, andTmpfs
. note:Binds
,Volumes
, andTmpfs
are still available and can be combined withMounts
.POST /build
now performs a preliminary validation of theDockerfile
before starting the build, and returns an error if the syntax is incorrect. Note that this change is unversioned and applied to all API versions.POST /build
acceptscachefrom
parameter to specify images used for build cache.GET /networks/
endpoint now correctly returns a list of all networks, instead of the default network if a trailing slash is provided, but noname
orid
.DELETE /containers/(name)
endpoint now returns an error ofremoval of container name is already in progress
with status code of 400, when container name is in a state of removal in progress.GET /containers/json
now supports ais-task
filter to filter containers that are tasks (part of a service in swarm mode).POST /containers/create
now takesStopTimeout
field.POST /services/create
andPOST /services/(id or name)/update
now acceptMonitor
andMaxFailureRatio
parameters, which control the response to failures during service updates.POST /services/(id or name)/update
now accepts aForceUpdate
parameter inside theTaskTemplate
, which causes the service to be updated even if there are no changes which would ordinarily trigger an update.POST /services/create
andPOST /services/(id or name)/update
now return aWarnings
array.GET /networks/(name)
now returns fieldCreated
in response to show network created time.POST /containers/(id or name)/exec
now accepts anEnv
field, which holds a list of environment variables to be set in the context of the command execution.GET /volumes
,GET /volumes/(name)
, andPOST /volumes/create
now return theOptions
field which holds the driver specific options to use for when creating the volume.GET /exec/(id)/json
now returnsPid
, which is the system pid for the exec'd process.POST /containers/prune
prunes stopped containers.POST /images/prune
prunes unused images.POST /volumes/prune
prunes unused volumes.POST /networks/prune
prunes unused networks.- Every API response now includes a
Docker-Experimental
header specifying if experimental features are enabled (value can betrue
orfalse
). - Every API response now includes a
API-Version
header specifying the default API version of the server. - The
hostConfig
option now accepts the fieldsCpuRealtimePeriod
andCpuRtRuntime
to allocate cpu runtime to rt tasks whenCONFIG_RT_GROUP_SCHED
is enabled in the kernel. - The
SecurityOptions
field within theGET /info
response now includesuserns
if user namespaces are enabled in the daemon. GET /nodes
andGET /node/(id or name)
now returnAddr
as part of a node'sStatus
, which is the address that that node connects to the manager from.- The
HostConfig
field now includesNanoCpus
that represents CPU quota in units of 10-9 CPUs. GET /info
now returns more structured information about security options.- The
HostConfig
field now includesCpuCount
that represents the number of CPUs available for execution by the container. Windows daemon only. POST /services/create
andPOST /services/(id or name)/update
now accept theTTY
parameter, which allocate a pseudo-TTY in container.POST /services/create
andPOST /services/(id or name)/update
now accept theDNSConfig
parameter, which specifies DNS related configurations in resolver configuration file (resolv.conf) throughNameservers
,Search
, andOptions
.POST /services/create
andPOST /services/(id or name)/update
now supportnode.platform.arch
andnode.platform.os
constraints in the servicesTaskSpec.Placement.Constraints
field.GET /networks/(id or name)
now includes IP and name of all peers nodes for swarm mode overlay networks.GET /plugins
list plugins.POST /plugins/pull?name=<plugin name>
pulls a plugin.GET /plugins/(plugin name)
inspect a plugin.POST /plugins/(plugin name)/set
configure a plugin.POST /plugins/(plugin name)/enable
enable a plugin.POST /plugins/(plugin name)/disable
disable a plugin.POST /plugins/(plugin name)/push
push a plugin.POST /plugins/create?name=(plugin name)
create a plugin.DELETE /plugins/(plugin name)
delete a plugin.POST /node/(id or name)/update
now accepts bothid
orname
to identify the node to update.GET /images/json
now support areference
filter.GET /secrets
returns information on the secrets.POST /secrets/create
creates a secret.DELETE /secrets/{id}
removes the secretid
.GET /secrets/{id}
returns information on the secretid
.POST /secrets/{id}/update
updates the secretid
.POST /services/(id or name)/update
now accepts service name or prefix of service id as a parameter.POST /containers/create
added 2 built-in log-opts that work on all logging drivers,mode
(blocking
|non-blocking
), andmax-buffer-size
(e.g.2m
) which enables a non-blocking log buffer.POST /containers/create
now takesHostConfig.Init
field to run an init inside the container that forwards signals and reaps processes.
v1.24 API changes
Docker Engine API v1.24 documentation
POST /containers/create
now takesStorageOpt
field.GET /info
now returnsSecurityOptions
field, showing ifapparmor
,seccomp
, orselinux
is supported.GET /info
no longer returns theExecutionDriver
property. This property was no longer used after integration with ContainerD in Docker 1.11.GET /networks
now supports filtering bylabel
anddriver
.GET /containers/json
now supports filtering containers bynetwork
name or id.POST /containers/create
now takesIOMaximumBandwidth
andIOMaximumIOps
fields. Windows daemon only.POST /containers/create
now returns an HTTP 400 "bad parameter" message if no command is specified (instead of an HTTP 500 "server error")GET /images/search
now takes afilters
query parameter.GET /events
now supports areload
event that is emitted when the daemon configuration is reloaded.GET /events
now supports filtering by daemon name or ID.GET /events
now supports adetach
event that is emitted on detaching from container process.GET /events
now supports anexec_detach
event that is emitted on detaching from exec process.GET /images/json
now supports filterssince
andbefore
.POST /containers/(id or name)/start
no longer accepts aHostConfig
.POST /images/(name)/tag
no longer has aforce
query parameter.GET /images/search
now supports maximum returned search resultslimit
.POST /containers/{name:.*}/copy
is now removed and errors out starting from this API version.- API errors are now returned as JSON instead of plain text.
POST /containers/create
andPOST /containers/(id)/start
allow you to configure kernel parameters (sysctls) for use in the container.POST /containers/<container ID>/exec
andPOST /exec/<exec ID>/start
no longer expects a "Container" field to be present. This property was not used and is no longer sent by the docker client.POST /containers/create/
now validates the hostname (should be a valid RFC 1123 hostname).POST /containers/create/
HostConfig.PidMode
field now acceptscontainer:<name|id>
, to have the container join the PID namespace of an existing container.
v1.23 API changes
GET /containers/json
returns the state of the container, one ofcreated
,restarting
,running
,paused
,exited
ordead
.GET /containers/json
returns the mount points for the container.GET /networks/(name)
now returns anInternal
field showing whether the network is internal or not.GET /networks/(name)
now returns anEnableIPv6
field showing whether the network has ipv6 enabled or not.POST /containers/(name)/update
now supports updating container's restart policy.POST /networks/create
now supports enabling ipv6 on the network by setting theEnableIPv6
field (doing this with a label will no longer work).GET /info
now returnsCgroupDriver
field showing what cgroup driver the daemon is using;cgroupfs
orsystemd
.GET /info
now returnsKernelMemory
field, showing if "kernel memory limit" is supported.POST /containers/create
now takesPidsLimit
field, if the kernel is >= 4.3 and the pids cgroup is supported.GET /containers/(id or name)/stats
now returnspids_stats
, if the kernel is >= 4.3 and the pids cgroup is supported.POST /containers/create
now allows you to override usernamespaces remapping and use privileged options for the container.POST /containers/create
now allows specifyingnocopy
for named volumes, which disables automatic copying from the container path to the volume.POST /auth
now returns anIdentityToken
when supported by a registry.POST /containers/create
with bothHostname
andDomainname
fields specified will result in the container's hostname being set toHostname
, rather thanHostname.Domainname
.GET /volumes
now supports more filters, new added filters arename
anddriver
.GET /containers/(id or name)/logs
now accepts adetails
query parameter to stream the extra attributes that were provided to the containersLogOpts
, such as environment variables and labels, with the logs.POST /images/load
now returns progress information as a JSON stream, and has aquiet
query parameter to suppress progress details.
v1.22 API changes
- The
HostConfig.LxcConf
field has been removed, and is no longer available onPOST /containers/create
andGET /containers/(id)/json
. POST /container/(name)/update
updates the resources of a container.GET /containers/json
supports filterisolation
on Windows.GET /containers/json
now returns the list of networks of containers.GET /info
Now returnsArchitecture
andOSType
fields, providing information about the host architecture and operating system type that the daemon runs on.GET /networks/(name)
now returns aName
field for each container attached to the network.GET /version
now returns theBuildTime
field in RFC3339Nano format to make it consistent with other date/time values returned by the API.AuthConfig
now supports aregistrytoken
for token based authenticationPOST /containers/create
now has a 4M minimum value limit forHostConfig.KernelMemory
- Pushes initiated with
POST /images/(name)/push
and pulls initiated withPOST /images/create
will be cancelled if the HTTP connection making the API request is closed before the push or pull completes. POST /containers/create
now allows you to set a read/write rate limit for a device (in bytes per second or IO per second).GET /networks
now supports filtering byname
,id
andtype
.POST /containers/create
now allows you to set the static IPv4 and/or IPv6 address for the container.POST /networks/(id)/connect
now allows you to set the static IPv4 and/or IPv6 address for the container.GET /info
now includes the number of containers running, stopped, and paused.POST /networks/create
now supports restricting external access to the network by setting theInternal
field.POST /networks/(id)/disconnect
now includes aForce
option to forcefully disconnect a container from networkGET /containers/(id)/json
now returns theNetworkID
of containers.POST /networks/create
Now supports an options field in the IPAM config that provides options for custom IPAM plugins.GET /networks/{network-id}
Now returns IPAM config options for custom IPAM plugins if any are available.GET /networks/<network-id>
now returns subnets info for user-defined networks.GET /info
can now return aSystemStatus
field useful for returning additional information about applications that are built on top of engine.
v1.21 API changes
GET /volumes
lists volumes from all volume drivers.POST /volumes/create
to create a volume.GET /volumes/(name)
get low-level information about a volume.DELETE /volumes/(name)
remove a volume with the specified name.VolumeDriver
was moved fromconfig
toHostConfig
to make the configuration portable.GET /images/(name)/json
now returns information about an image'sRepoTags
andRepoDigests
.- The
config
option now accepts the fieldStopSignal
, which specifies the signal to use to kill a container. GET /containers/(id)/stats
will return networking information respectively for each interface.- The
HostConfig
option now includes theDnsOptions
field to configure the container's DNS options. POST /build
now optionally takes a serialized map of build-time variables.GET /events
now includes atimenano
field, in addition to the existingtime
field.GET /events
now supports filtering by image and container labels.GET /info
now lists engine version information and return the information ofCPUShares
andCpuset
.GET /containers/json
will returnImageID
of the image used by container.POST /exec/(name)/start
will now return an HTTP 409 when the container is either stopped or paused.POST /containers/create
now takesKernelMemory
in HostConfig to specify kernel memory limit.GET /containers/(name)/json
now accepts asize
parameter. Setting this parameter to '1' returns container size information in theSizeRw
andSizeRootFs
fields.GET /containers/(name)/json
now returns aNetworkSettings.Networks
field, detailing network settings per network. This field deprecates theNetworkSettings.Gateway
,NetworkSettings.IPAddress
,NetworkSettings.IPPrefixLen
, andNetworkSettings.MacAddress
fields, which are still returned for backward-compatibility, but will be removed in a future version.GET /exec/(id)/json
now returns aNetworkSettings.Networks
field, detailing networksettings per network. This field deprecates theNetworkSettings.Gateway
,NetworkSettings.IPAddress
,NetworkSettings.IPPrefixLen
, andNetworkSettings.MacAddress
fields, which are still returned for backward-compatibility, but will be removed in a future version.- The
HostConfig
option now includes theOomScoreAdj
field for adjusting the badness heuristic. This heuristic selects which processes the OOM killer kills under out-of-memory conditions.
v1.20 API changes
GET /containers/(id)/archive
get an archive of filesystem content from a container.PUT /containers/(id)/archive
upload an archive of content to be extracted to an existing directory inside a container's filesystem.POST /containers/(id)/copy
is deprecated in favor of the abovearchive
endpoint which can be used to download files and directories from a container.- The
hostConfig
option now accepts the fieldGroupAdd
, which specifies a list of additional groups that the container process will run as.
v1.19 API changes
- When the daemon detects a version mismatch with the client, usually when the client is newer than the daemon, an HTTP 400 is now returned instead of a 404.
GET /containers/(id)/stats
now acceptsstream
bool to get only one set of stats and disconnect.GET /containers/(id)/logs
now accepts asince
timestamp parameter.GET /info
The fieldsDebug
,IPv4Forwarding
,MemoryLimit
, andSwapLimit
are now returned as boolean instead of as an int. In addition, the end point now returns the new boolean fieldsCpuCfsPeriod
,CpuCfsQuota
, andOomKillDisable
.- The
hostConfig
option now accepts the fieldsCpuPeriod
andCpuQuota
POST /build
acceptscpuperiod
andcpuquota
options
v1.18 API changes
GET /version
now returnsOs
,Arch
andKernelVersion
.POST /containers/create
andPOST /containers/(id)/start
allow you to set ulimit settings for use in the container.GET /info
now returnsSystemTime
,HttpProxy
,HttpsProxy
andNoProxy
.GET /images/json
added aRepoDigests
field to include image digest information.POST /build
can now set resource constraints for all containers created for the build.CgroupParent
can be passed in the host config to setup container cgroups under a specific cgroup.POST /build
closing the HTTP request cancels the buildPOST /containers/(id)/exec
includesWarnings
field to response.