diff --git a/cli/command/system/testdata/docker-client-version.golden b/cli/command/system/testdata/docker-client-version.golden index 04cc88a66f..faed505505 100644 --- a/cli/command/system/testdata/docker-client-version.golden +++ b/cli/command/system/testdata/docker-client-version.golden @@ -5,6 +5,7 @@ Client: Git commit: deadbeef Built: Wed May 30 22:21:05 2018 OS/Arch: linux/amd64 + Context: my-context Experimental: true Server: Docker Enterprise Edition (EE) 2.0 diff --git a/cli/command/system/version.go b/cli/command/system/version.go index 62170ca06d..56eac56ab7 100644 --- a/cli/command/system/version.go +++ b/cli/command/system/version.go @@ -32,6 +32,7 @@ Client:{{if ne .Platform.Name ""}} {{.Platform.Name}}{{end}} Git commit: {{.GitCommit}} Built: {{.BuildTime}} OS/Arch: {{.Os}}/{{.Arch}} + Context: {{.Context}} Experimental: {{.Experimental}} {{- end}} @@ -80,6 +81,7 @@ type clientVersion struct { Os string Arch string BuildTime string `json:",omitempty"` + Context string Experimental bool } @@ -147,6 +149,7 @@ func runVersion(dockerCli command.Cli, opts *versionOptions) error { Os: runtime.GOOS, Arch: runtime.GOARCH, Experimental: dockerCli.ClientInfo().HasExperimental, + Context: dockerCli.CurrentContext(), }, } diff --git a/cli/command/system/version_test.go b/cli/command/system/version_test.go index 482c6ce24d..ab18fb1ddc 100644 --- a/cli/command/system/version_test.go +++ b/cli/command/system/version_test.go @@ -41,6 +41,7 @@ func TestVersionAlign(t *testing.T) { Os: "linux", Arch: "amd64", BuildTime: "Wed May 30 22:21:05 2018", + Context: "my-context", Experimental: true, }, Server: &types.Version{}, diff --git a/docs/reference/commandline/version.md b/docs/reference/commandline/version.md index a3abdd0738..fa02281b89 100644 --- a/docs/reference/commandline/version.md +++ b/docs/reference/commandline/version.md @@ -39,6 +39,7 @@ Client: Git commit: afacb8b Built: Wed Mar 11 01:21:11 2020 OS/Arch: darwin/amd64 + Context: default Experimental: true Server: @@ -76,3 +77,47 @@ $ docker version --format '{{json .}}' {"Client":{"Platform":{"Name":"Docker Engine - Community"},"Version":"19.03.8","ApiVersion":"1.40","DefaultAPIVersion":"1.40","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"darwin","Arch":"amd64","BuildTime":"Wed Mar 11 01:21:11 2020","Experimental":true},"Server":{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.8","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"Wed Mar 11 01:29:16 2020","Experimental":"true","GitCommit":"afacb8b","GoVersion":"go1.12.17","KernelVersion":"4.19.76-linuxkit","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"v1.2.13","Details":{"GitCommit":"7ad184331fa3e55e52b890ea95e65ba581ae3429"}},{"Name":"runc","Version":"1.0.0-rc10","Details":{"GitCommit":"dc9208a3303feef5b3839f4323d9beb36df0a9dd"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.8","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"linux","Arch":"amd64","KernelVersion":"4.19.76-linuxkit","Experimental":true,"BuildTime":"2020-03-11T01:29:16.000000000+00:00"}} ``` + +### Print the current context + +The following example prints the currently used [`docker context`](context.md): + +```bash +$ docker version --format='{{.Client.Context}}' +default +``` + +As an example, this output can be used to dynamically change your shell prompt +to indicate your active context. The example below illustrates how this output +could be used when using Bash as your shell. + +Declare a function to obtain the current context in your `~/.bashrc`, and set +this command as your `PROMPT_COMMAND` + +```bash +function docker_context_prompt() { + PS1="context: $(docker version --format='{{.Client.Context}}')> " +} + +PROMPT_COMMAND=docker_context_prompt +``` + +After reloading the `~/.bashrc`, the prompt now shows the currently selected +`docker context`: + +```bash +$ source ~/.bashrc +context: default> docker context create --docker host=unix:///var/run/docker.sock my-context +my-context +Successfully created context "my-context" +context: default> docker context use my-context +my-context +Current context is now "my-context" +context: my-context> docker context use default +default +Current context is now "default" +context: default> +``` + +Refer to the [`docker context` section](context.md) in the command line reference +for more information about `docker context`.