diff --git a/api/types/types.go b/api/types/types.go index 4dbc6b92c0..e5f83ec717 100644 --- a/api/types/types.go +++ b/api/types/types.go @@ -133,6 +133,7 @@ type ContainerProcessList struct { type Version struct { Version string APIVersion string `json:"ApiVersion"` + MinAPIVersion string `json:"MinAPIVersion,omitempty"` GitCommit string GoVersion string Os string diff --git a/cli/command/system/version.go b/cli/command/system/version.go index 0b484cb3b9..6040c79361 100644 --- a/cli/command/system/version.go +++ b/cli/command/system/version.go @@ -23,13 +23,14 @@ var versionTemplate = `Client: OS/Arch: {{.Client.Os}}/{{.Client.Arch}}{{if .ServerOK}} Server: - Version: {{.Server.Version}} - API version: {{.Server.APIVersion}} - Go version: {{.Server.GoVersion}} - Git commit: {{.Server.GitCommit}} - Built: {{.Server.BuildTime}} - OS/Arch: {{.Server.Os}}/{{.Server.Arch}} - Experimental: {{.Server.Experimental}}{{end}}` + Version: {{.Server.Version}} + API version: {{.Server.APIVersion}} + Minimum API version: {{.Server.MinAPIVersion}} + Go version: {{.Server.GoVersion}} + Git commit: {{.Server.GitCommit}} + Built: {{.Server.BuildTime}} + OS/Arch: {{.Server.Os}}/{{.Server.Arch}} + Experimental: {{.Server.Experimental}}{{end}}` type versionOptions struct { format string diff --git a/daemon/info.go b/daemon/info.go index f20fba6578..7baeedc692 100644 --- a/daemon/info.go +++ b/daemon/info.go @@ -7,6 +7,7 @@ import ( "time" "github.com/Sirupsen/logrus" + "github.com/docker/docker/api" "github.com/docker/docker/api/types" "github.com/docker/docker/container" "github.com/docker/docker/dockerversion" @@ -167,13 +168,14 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) { // SystemVersion returns version information about the daemon. func (daemon *Daemon) SystemVersion() types.Version { v := types.Version{ - Version: dockerversion.Version, - GitCommit: dockerversion.GitCommit, - GoVersion: runtime.Version(), - Os: runtime.GOOS, - Arch: runtime.GOARCH, - BuildTime: dockerversion.BuildTime, - Experimental: daemon.configStore.Experimental, + Version: dockerversion.Version, + GitCommit: dockerversion.GitCommit, + MinAPIVersion: api.MinVersion, + GoVersion: runtime.Version(), + Os: runtime.GOOS, + Arch: runtime.GOARCH, + BuildTime: dockerversion.BuildTime, + Experimental: daemon.configStore.Experimental, } kernelVersion := "" diff --git a/docs/reference/api/docker_remote_api.md b/docs/reference/api/docker_remote_api.md index 99aac60955..2edaaa7d26 100644 --- a/docs/reference/api/docker_remote_api.md +++ b/docs/reference/api/docker_remote_api.md @@ -130,6 +130,7 @@ This section lists each version from latest to oldest. Each listing includes a [Docker Remote API v1.25](docker_remote_api_v1.25.md) documentation +* `GET /version` now returns `MinAPIVersion`. * `POST /build` accepts `networkmode` parameter to specify network used during build. * `GET /images/(name)/json` now returns `OsVersion` if populated * `GET /info` now returns `Isolation`. diff --git a/docs/reference/api/docker_remote_api_v1.25.md b/docs/reference/api/docker_remote_api_v1.25.md index 544390c971..d7d3c121e1 100644 --- a/docs/reference/api/docker_remote_api_v1.25.md +++ b/docs/reference/api/docker_remote_api_v1.25.md @@ -2768,6 +2768,7 @@ Show the docker version information "GitCommit": "deadbee", "Arch": "amd64", "ApiVersion": "1.25", + "MinAPIVersion": "1.12", "BuildTime": "2016-06-14T07:09:13.444803460+00:00", "Experimental": true } diff --git a/integration-cli/docker_cli_version_test.go b/integration-cli/docker_cli_version_test.go index 7672beb732..40b8d0e726 100644 --- a/integration-cli/docker_cli_version_test.go +++ b/integration-cli/docker_cli_version_test.go @@ -14,7 +14,7 @@ func (s *DockerSuite) TestVersionEnsureSucceeds(c *check.C) { "Client:": 1, "Server:": 1, " Version:": 2, - " API version:": 2, + " API version:": 3, " Go version:": 2, " Git commit:": 2, " OS/Arch:": 2, @@ -40,7 +40,7 @@ func (s *DockerSuite) TestVersionPlatform_l(c *check.C) { func testVersionPlatform(c *check.C, platform string) { out, _ := dockerCmd(c, "version") - expected := "OS/Arch: " + platform + expected := "OS/Arch: " + platform split := strings.Split(out, "\n") c.Assert(len(split) >= 14, checker.Equals, true, check.Commentf("got %d lines from version", len(split)))