2015-06-21 16:41:38 -04:00
# version
2023-01-06 13:04:05 -05:00
<!-- - MARKER_GEN_START -->
2016-07-07 14:43:18 -04:00
Show the Docker version information
2015-06-21 16:41:38 -04:00
2023-01-06 13:04:05 -05:00
### Options
2023-04-09 20:27:01 -04:00
| Name | Type | Default | Description |
|:---------------------------------------|:---------|:--------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [`-f` ](#format ), [`--format` ](#format ) | `string` | | Format output using a custom template:< br > 'json': Print in JSON format< br > 'TEMPLATE': Print output using the given Go template.< br > Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates |
2023-01-06 13:04:05 -05:00
<!-- - MARKER_GEN_END -->
2015-06-25 21:25:41 -04:00
2017-02-07 18:42:48 -05:00
## Description
2022-05-01 08:00:56 -04:00
The version command prints the current version number for all independently
versioned Docker components. Use the [`--format` ](#format ) option to customize
the output.
2015-06-25 21:25:41 -04:00
2022-05-01 08:00:56 -04:00
The version command (`docker version`) outputs the version numbers of Docker
components, while the `--version` flag (`docker --version`) outputs the version
number of the Docker CLI you are using.
2015-06-25 21:25:41 -04:00
2017-02-07 18:42:48 -05:00
### Default output
2022-05-01 08:00:56 -04:00
The default output renders all version information divided into two sections;
2023-12-13 18:06:16 -05:00
the `Client` section contains information about the Docker CLI and client
components, and the `Server` section contains information about the Docker
Engine and components used by the Docker Engine, such as the containerd and runc
2022-05-01 08:00:56 -04:00
OCI Runtimes.
The information shown may differ depending on how you installed Docker and
what components are in use. The following example shows the output on a macOS
machine running Docker Desktop:
2021-08-21 08:54:14 -04:00
```console
2017-02-07 18:42:48 -05:00
$ docker version
2023-04-10 08:14:29 -04:00
Client: Docker Engine - Community
Version: 23.0.3
API version: 1.42
Go version: go1.19.7
Git commit: 3e7cbfd
Built: Tue Apr 4 22:05:41 2023
2020-04-19 09:43:08 -04:00
OS/Arch: darwin/amd64
2020-05-07 06:57:20 -04:00
Context: default
2017-02-07 18:42:48 -05:00
2023-04-10 08:14:29 -04:00
Server: Docker Desktop 4.19.0 (12345)
2022-05-01 08:00:56 -04:00
Engine:
2023-04-10 08:14:29 -04:00
Version: 23.0.3
API version: 1.42 (minimum version 1.12)
Go version: go1.19.7
Git commit: 59118bf
Built: Tue Apr 4 22:05:41 2023
2022-05-01 08:00:56 -04:00
OS/Arch: linux/amd64
Experimental: false
containerd:
2023-04-10 08:14:29 -04:00
Version: 1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
2022-05-01 08:00:56 -04:00
runc:
2023-04-10 08:14:29 -04:00
Version: 1.1.5
GitCommit: v1.1.5-0-gf19387a
2022-05-01 08:00:56 -04:00
docker-init:
Version: 0.19.0
GitCommit: de40ad0
```
### Client and server versions
Docker uses a client/server architecture, which allows you to use the Docker CLI
on your local machine to control a Docker Engine running on a remote machine,
2023-12-13 18:06:16 -05:00
which can be (for example) a machine running in the cloud or inside a virtual machine.
2022-05-01 08:00:56 -04:00
The following example switches the Docker CLI to use a [context ](context.md )
2023-12-13 18:06:16 -05:00
named `remote-test-server` , which runs an older version of the Docker Engine
2022-05-01 08:00:56 -04:00
on a Linux server:
```console
$ docker context use remote-test-server
remote-test-server
$ docker version
2023-04-10 08:14:29 -04:00
Client: Docker Engine - Community
Version: 23.0.3
API version: 1.40 (downgraded from 1.42)
Go version: go1.19.7
Git commit: 3e7cbfd
Built: Tue Apr 4 22:05:41 2023
2022-05-01 08:00:56 -04:00
OS/Arch: darwin/amd64
Context: remote-test-server
Server: Docker Engine - Community
2020-04-19 09:43:08 -04:00
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:29:16 2020
OS/Arch: linux/amd64
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
2017-02-07 18:42:48 -05:00
```
2022-04-30 08:30:19 -04:00
### API version and version negotiation
The API version used by the client depends on the Docker Engine that the Docker
CLI is connecting with. When connecting with the Docker Engine, the Docker CLI
and Docker Engine perform API version negotiation, and select the highest API
version that is supported by both the Docker CLI and the Docker Engine.
2023-12-13 18:06:16 -05:00
For example, if the CLI is connecting with Docker Engine version 19.03, it downgrades
2024-08-20 06:35:04 -04:00
to API version 1.40 (refer to the [API version matrix ](https://docs.docker.com/reference/api/engine/#api-version-matrix )
2022-04-30 08:30:19 -04:00
to learn about the supported API versions for Docker Engine):
```console
$ docker version --format '{{.Client.APIVersion}}'
1.40
```
Be aware that API version can also be overridden using the `DOCKER_API_VERSION`
environment variable, which can be useful for debugging purposes, and disables
API version negotiation. The following example illustrates an environment where
the `DOCKER_API_VERSION` environment variable is set. Unsetting the environment
variable removes the override, and re-enables API version negotiation:
```console
$ env | grep DOCKER_API_VERSION
DOCKER_API_VERSION=1.39
$ docker version --format '{{.Client.APIVersion}}'
1.39
$ unset DOCKER_API_VERSION
$ docker version --format '{{.Client.APIVersion}}'
2023-04-10 08:14:29 -04:00
1.42
2022-04-30 08:30:19 -04:00
```
2022-05-01 08:00:56 -04:00
## Examples
2023-01-06 13:28:29 -05:00
### <a name="format"></a> Format the output (--format)
2022-05-01 08:00:56 -04:00
The formatting option (`--format`) pretty-prints the output using a Go template,
which allows you to customize the output format, or to obtain specific information
from the output. Refer to the [format command and log output ](https://docs.docker.com/config/formatting/ )
page for details of the format.
2017-02-07 18:42:48 -05:00
### Get the server version
2021-08-21 08:54:14 -04:00
```console
2017-02-07 18:42:48 -05:00
$ docker version --format '{{.Server.Version}}'
2023-04-10 08:14:29 -04:00
23.0.3
2017-02-07 18:42:48 -05:00
```
2018-11-07 15:11:14 -05:00
### Get the client API version
2022-04-30 08:30:19 -04:00
The following example prints the API version that is used by the client:
2018-11-07 15:11:14 -05:00
```console
$ docker version --format '{{.Client.APIVersion}}'
2023-04-10 08:14:29 -04:00
1.42
2018-11-07 15:11:14 -05:00
```
2022-04-30 08:30:19 -04:00
The version shown is the API version that is negotiated between the client
and the Docker Engine. Refer to [API version and version negotiation ](#api-version-and-version-negotiation )
above for more information.
2017-02-07 18:42:48 -05:00
### Dump raw JSON data
2021-08-21 08:54:14 -04:00
```console
2017-02-07 18:42:48 -05:00
$ docker version --format '{{json .}}'
2023-04-10 08:14:29 -04:00
{"Client":"Version":"23.0.3","ApiVersion":"1.42", ...}
2017-02-07 18:42:48 -05:00
```