logout.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package client
  2. import (
  3. "fmt"
  4. Cli "github.com/docker/docker/cli"
  5. flag "github.com/docker/docker/pkg/mflag"
  6. "github.com/docker/docker/registry"
  7. )
  8. // CmdLogout logs a user out from a Docker registry.
  9. //
  10. // If no server is specified, the user will be logged out from the registry's index server.
  11. //
  12. // Usage: docker logout [SERVER]
  13. func (cli *DockerCli) CmdLogout(args ...string) error {
  14. cmd := Cli.Subcmd("logout", []string{"[SERVER]"}, Cli.DockerCommands["logout"].Description+".\nIf no server is specified \""+registry.IndexServer+"\" is the default.", true)
  15. cmd.Require(flag.Max, 1)
  16. cmd.ParseFlags(args, true)
  17. serverAddress := registry.IndexServer
  18. if len(cmd.Args()) > 0 {
  19. serverAddress = cmd.Arg(0)
  20. }
  21. if _, ok := cli.configFile.AuthConfigs[serverAddress]; !ok {
  22. fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress)
  23. return nil
  24. }
  25. fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress)
  26. delete(cli.configFile.AuthConfigs, serverAddress)
  27. if err := cli.configFile.Save(); err != nil {
  28. return fmt.Errorf("Failed to save docker config: %v", err)
  29. }
  30. return nil
  31. }