diff --git a/api/client/commands.go b/api/client/commands.go index c4e4cb9821..65c06ba15c 100644 --- a/api/client/commands.go +++ b/api/client/commands.go @@ -67,7 +67,8 @@ func (cli *DockerCli) CmdHelp(args ...string) error { {"inspect", "Return low-level information on a container"}, {"kill", "Kill a running container"}, {"load", "Load an image from a tar archive"}, - {"login", "Register or log in to the Docker registry server"}, + {"login", "Register or log in to a Docker registry server"}, + {"logout", "Log out from a Docker registry server"}, {"logs", "Fetch the logs of a container"}, {"port", "Lookup the public-facing port that is NAT-ed to PRIVATE_PORT"}, {"pause", "Pause all processes within a container"}, @@ -353,6 +354,32 @@ func (cli *DockerCli) CmdLogin(args ...string) error { return nil } +// log out from a Docker registry +func (cli *DockerCli) CmdLogout(args ...string) error { + cmd := cli.Subcmd("logout", "[SERVER]", "Log out from a Docker registry, if no server is specified \""+registry.IndexServerAddress()+"\" is the default.") + + if err := cmd.Parse(args); err != nil { + return nil + } + serverAddress := registry.IndexServerAddress() + if len(cmd.Args()) > 0 { + serverAddress = cmd.Arg(0) + } + + cli.LoadConfigFile() + if _, ok := cli.configFile.Configs[serverAddress]; !ok { + fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress) + } else { + fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress) + delete(cli.configFile.Configs, serverAddress) + + if err := registry.SaveConfig(cli.configFile); err != nil { + return fmt.Errorf("Failed to save docker config: %v", err) + } + } + return nil +} + // 'docker wait': block until a container stops func (cli *DockerCli) CmdWait(args ...string) error { cmd := cli.Subcmd("wait", "CONTAINER [CONTAINER...]", "Block until a container stops, then print its exit code.") diff --git a/docs/man/docker-logout.1.md b/docs/man/docker-logout.1.md new file mode 100644 index 0000000000..0196f0ed7d --- /dev/null +++ b/docs/man/docker-logout.1.md @@ -0,0 +1,23 @@ +% DOCKER(1) Docker User Manuals +% Daniel, Dao Quang Minh +% JUNE 2014 +# NAME +docker-logout - Log out from a Docker registry + +# SYNOPSIS +**docker logout** [SERVER] + +# DESCRIPTION +Log the user out from a Docker registry, if no server is +specified "https://index.docker.io/v1/" is the default. If you want to +log out from a private registry you can specify this by adding the server name. + +# EXAMPLE + +## Log out from a local registry + + # docker logout localhost:8080 + +# HISTORY +June 2014, Originally compiled by Daniel, Dao Quang Minh (daniel at nitrous dot io) + diff --git a/docs/man/docker.1.md b/docs/man/docker.1.md index 602c6e2ace..18e8978af6 100644 --- a/docs/man/docker.1.md +++ b/docs/man/docker.1.md @@ -124,6 +124,9 @@ inside it) **docker-login(1)** Register or Login to a Docker registry server +**docker-logout(1)** + Log the user out of a Docker registry server + **docker-logs(1)** Fetch the logs of a container diff --git a/docs/sources/reference/commandline/cli.md b/docs/sources/reference/commandline/cli.md index dac7c1610b..56acc33310 100644 --- a/docs/sources/reference/commandline/cli.md +++ b/docs/sources/reference/commandline/cli.md @@ -732,6 +732,15 @@ specify this by adding the server name. example: $ docker login localhost:8080 +## logout + + Usage: docker logout [SERVER] + + Log out from a Docker registry, if no server is specified "https://index.docker.io/v1/" is the default. + + example: + $ docker logout localhost:8080 + ## logs Usage: docker logs CONTAINER