Browse code

Add logout command

"docker logout [SERVER]" will remove the registry server' credentials from
.dockercfg file. If a server is not specified, it will log user out of the
default docker registry server

Docker-DCO-1.1-Signed-off-by: Daniel, Dao Quang Minh <dqminh89@gmail.com> (github: dqminh)

Daniel, Dao Quang Minh authored on 2014/06/27 15:52:36
Showing 4 changed files
... ...
@@ -68,6 +68,7 @@ func (cli *DockerCli) CmdHelp(args ...string) error {
68 68
 		{"kill", "Kill a running container"},
69 69
 		{"load", "Load an image from a tar archive"},
70 70
 		{"login", "Register or log in to the Docker registry server"},
71
+		{"logout", "Logout of the Docker registry server"},
71 72
 		{"logs", "Fetch the logs of a container"},
72 73
 		{"port", "Lookup the public-facing port that is NAT-ed to PRIVATE_PORT"},
73 74
 		{"pause", "Pause all processes within a container"},
... ...
@@ -353,6 +354,36 @@ func (cli *DockerCli) CmdLogin(args ...string) error {
353 353
 	return nil
354 354
 }
355 355
 
356
+// logout of a registry service
357
+func (cli *DockerCli) CmdLogout(args ...string) error {
358
+	cmd := cli.Subcmd("logout", "[SERVER]", "Logout of a docker registry server, if no server is specified \""+registry.IndexServerAddress()+"\" is the default.")
359
+
360
+	if err := cmd.Parse(args); err != nil {
361
+		return nil
362
+	}
363
+	serverAddress := registry.IndexServerAddress()
364
+	if len(cmd.Args()) > 0 {
365
+		serverAddress = cmd.Arg(0)
366
+	}
367
+
368
+	cli.LoadConfigFile()
369
+	if _, ok := cli.configFile.Configs[serverAddress]; !ok {
370
+		fmt.Fprintf(cli.out, "Not logged in to %s\n", serverAddress)
371
+		os.Exit(0)
372
+	}
373
+
374
+	fmt.Fprintf(cli.out, "Remove login credentials for %s\n", serverAddress)
375
+	delete(cli.configFile.Configs, serverAddress)
376
+
377
+	if err := registry.SaveConfig(cli.configFile); err != nil {
378
+		fmt.Fprintln(cli.out, "Failed to save docker config")
379
+		os.Exit(1)
380
+	}
381
+
382
+	fmt.Fprintln(cli.out, "Saved docker config")
383
+	return nil
384
+}
385
+
356 386
 // 'docker wait': block until a container stops
357 387
 func (cli *DockerCli) CmdWait(args ...string) error {
358 388
 	cmd := cli.Subcmd("wait", "CONTAINER [CONTAINER...]", "Block until a container stops, then print its exit code.")
359 389
new file mode 100644
... ...
@@ -0,0 +1,24 @@
0
+% DOCKER(1) Docker User Manuals
1
+% William Henry
2
+% APRIL 2014
3
+# NAME
4
+docker-logout - Log the user out of a Docker registry server
5
+
6
+# SYNOPSIS
7
+**docker logout** [SERVER]
8
+
9
+# DESCRIPTION
10
+Log the user out of a docker registry server, , if no server is
11
+specified "https://index.docker.io/v1/" is the default. If you want to
12
+logout of a private registry you can specify this by adding the server name.
13
+
14
+# EXAMPLE
15
+
16
+## Logout of a local registry
17
+
18
+    # docker logout localhost:8080
19
+
20
+# HISTORY
21
+April 2014, Originally compiled by William Henry (whenry at redhat dot com)
22
+based on docker.io source material and internal work.
23
+
... ...
@@ -124,6 +124,9 @@ inside it)
124 124
 **docker-login(1)**
125 125
   Register or Login to a Docker registry server
126 126
 
127
+**docker-logout(1)**
128
+  Log the user out of a Docker registry server
129
+
127 130
 **docker-logs(1)**
128 131
   Fetch the logs of a container
129 132
 
... ...
@@ -732,6 +732,15 @@ specify this by adding the server name.
732 732
     example:
733 733
     $ docker login localhost:8080
734 734
 
735
+## logout
736
+
737
+    Usage: docker logout [SERVER]
738
+
739
+    Log the user out of a docker registry server, if no server is specified "https://index.docker.io/v1/" is the default.
740
+
741
+    example:
742
+    $ docker logout localhost:8080
743
+
735 744
 ## logs
736 745
 
737 746
     Usage: docker logs CONTAINER