Add warnings when DOCKER_HOST conflicts with contexts

For clarity, on `docker context use` or `docker context ls`, this adds a
warning if the DOCKER_HOST variable is set because it overrides the
active context.

Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
This commit is contained in:
Simon Ferquel 2019-04-09 17:12:12 +02:00
parent d6af3e143e
commit 1cefe057cd
2 changed files with 14 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package context
import ( import (
"fmt" "fmt"
"os"
"sort" "sort"
"github.com/docker/cli/cli" "github.com/docker/cli/cli"
@ -76,7 +77,14 @@ func runList(dockerCli command.Cli, opts *listOptions) error {
sort.Slice(contexts, func(i, j int) bool { sort.Slice(contexts, func(i, j int) bool {
return sortorder.NaturalLess(contexts[i].Name, contexts[j].Name) return sortorder.NaturalLess(contexts[i].Name, contexts[j].Name)
}) })
return format(dockerCli, opts, contexts) if err := format(dockerCli, opts, contexts); err != nil {
return err
}
if os.Getenv("DOCKER_HOST") != "" {
fmt.Fprint(dockerCli.Err(), "Warning: DOCKER_HOST environment variable overrides the active context. "+
"To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.\n")
}
return nil
} }
func format(dockerCli command.Cli, opts *listOptions, contexts []*formatter.ClientContext) error { func format(dockerCli command.Cli, opts *listOptions, contexts []*formatter.ClientContext) error {

View File

@ -2,6 +2,7 @@ package context
import ( import (
"fmt" "fmt"
"os"
"github.com/docker/cli/cli/command" "github.com/docker/cli/cli/command"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -39,5 +40,9 @@ func RunUse(dockerCli command.Cli, name string) error {
} }
fmt.Fprintln(dockerCli.Out(), name) fmt.Fprintln(dockerCli.Out(), name)
fmt.Fprintf(dockerCli.Err(), "Current context is now %q\n", name) fmt.Fprintf(dockerCli.Err(), "Current context is now %q\n", name)
if os.Getenv("DOCKER_HOST") != "" {
fmt.Fprintf(dockerCli.Err(), "Warning: DOCKER_HOST environment variable overrides the active context. "+
"To use %q, either set the global --context flag, or unset DOCKER_HOST environment variable.\n", name)
}
return nil return nil
} }