| # version | |
| <!---MARKER_GEN_START--> | |
| Show the Docker version information | |
| ### Options | |
| | 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 | | |
| <!---MARKER_GEN_END--> | |
| ## Description | |
| The version command prints the current version number for all independently | |
| versioned Docker components. Use the [`--format`](#format) option to customize | |
| the output. | |
| 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. | |
| ### Default output | |
| The default output renders all version information divided into two sections; | |
| 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 | |
| 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: | |
| ```console | |
| $ docker version | |
| Client: Docker Engine - Community | |
| Version: 28.5.1 | |
| API version: 1.51 | |
| Go version: go1.24.8 | |
| Git commit: e180ab8 | |
| Built: Wed Oct 8 12:16:17 2025 | |
| OS/Arch: darwin/arm64 | |
| Context: remote-test-server | |
| Server: Docker Desktop 4.19.0 (12345) | |
| Engine: | |
| Version: 27.5.1 | |
| API version: 1.47 (minimum version 1.24) | |
| Go version: go1.22.11 | |
| Git commit: 4c9b3b0 | |
| Built: Wed Jan 22 13:41:24 2025 | |
| OS/Arch: linux/amd64 | |
| Experimental: true | |
| containerd: | |
| Version: v1.7.25 | |
| GitCommit: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb | |
| runc: | |
| Version: 1.2.4 | |
| GitCommit: v1.2.4-0-g6c52b3f | |
| 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, | |
| which can be (for example) a machine running in the cloud or inside a virtual machine. | |
| The following example switches the Docker CLI to use a [context](context.md) | |
| named `remote-test-server`, which runs an older version of the Docker Engine | |
| on a Linux server: | |
| ```console | |
| $ docker context use remote-test-server | |
| remote-test-server | |
| $ docker version | |
| Client: Docker Engine - Community | |
| Version: 28.5.1 | |
| API version: 1.51 | |
| Go version: go1.24.8 | |
| Git commit: e180ab8 | |
| Built: Wed Oct 8 12:16:17 2025 | |
| OS/Arch: darwin/arm64 | |
| Context: remote-test-server | |
| Server: Docker Engine - Community | |
| Engine: | |
| Version: 27.5.1 | |
| API version: 1.47 (minimum version 1.24) | |
| Go version: go1.22.11 | |
| Git commit: 4c9b3b0 | |
| Built: Wed Jan 22 13:41:24 2025 | |
| OS/Arch: linux/amd64 | |
| Experimental: true | |
| containerd: | |
| Version: v1.7.25 | |
| GitCommit: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb | |
| runc: | |
| Version: 1.2.4 | |
| GitCommit: v1.2.4-0-g6c52b3f | |
| docker-init: | |
| Version: 0.19.0 | |
| GitCommit: de40ad0 | |
| ``` | |
| ### 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. | |
| For example, if the CLI is connecting with Docker Engine version 27.5, it downgrades | |
| to API version 1.47 (refer to the [API version matrix](https://docs.docker.com/reference/api/engine/#api-version-matrix) | |
| to learn about the supported API versions for Docker Engine): | |
| ```console | |
| $ docker version --format '{{.Client.APIVersion}}' | |
| 1.47 | |
| ``` | |
| 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.50 | |
| $ docker version --format '{{.Client.APIVersion}}' | |
| 1.50 | |
| $ unset DOCKER_API_VERSION | |
| $ docker version --format '{{.Client.APIVersion}}' | |
| 1.51 | |
| ``` | |
| ## Examples | |
| ### <a name="format"></a> Format the output (--format) | |
| 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. | |
| ### Get the server version | |
| ```console | |
| $ docker version --format '{{.Server.Version}}' | |
| 28.5.1 | |
| ``` | |
| ### Get the client API version | |
| The following example prints the API version that is used by the client: | |
| ```console | |
| $ docker version --format '{{.Client.APIVersion}}' | |
| 1.51 | |
| ``` | |
| 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. | |
| ### Dump raw JSON data | |
| ```console | |
| $ docker version --format '{{json .}}' | |
| {"Client":"Version":"28.5.1","ApiVersion":"1.51", ...} | |
| ``` |