command: docker version
short: Show the Docker version information
long: |-
    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](/reference/cli/docker/context/)
    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](/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
    ```
usage: docker version [OPTIONS]
pname: docker
plink: docker.yaml
options:
    - option: format
      shorthand: f
      value_type: string
      description: |-
        Format output using a custom template:
        'json':             Print in JSON format
        'TEMPLATE':         Print output using the given Go template.
        Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
      details_url: '#format'
      deprecated: false
      hidden: false
      experimental: false
      experimentalcli: false
      kubernetes: false
      swarm: false
inherited_options:
    - option: help
      value_type: bool
      default_value: "false"
      description: Print usage
      deprecated: false
      hidden: true
      experimental: false
      experimentalcli: false
      kubernetes: false
      swarm: false
examples: |-
    ### Format the output (--format) {#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](/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", ...}
    ```
deprecated: false
hidden: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false

