浏览代码

Merge pull request #12210 from tiborvass/carry-9916

Carry 9916: add comment column in docker history command
Tibor Vass 10 年之前
父节点
当前提交
296323cd6c

+ 3 - 2
api/client/history.go

@@ -36,7 +36,7 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
 
 
 	w := tabwriter.NewWriter(cli.out, 20, 1, 3, ' ', 0)
 	w := tabwriter.NewWriter(cli.out, 20, 1, 3, ' ', 0)
 	if !*quiet {
 	if !*quiet {
-		fmt.Fprintln(w, "IMAGE\tCREATED\tCREATED BY\tSIZE")
+		fmt.Fprintln(w, "IMAGE\tCREATED\tCREATED BY\tSIZE\tCOMMENT")
 	}
 	}
 
 
 	for _, entry := range history {
 	for _, entry := range history {
@@ -53,7 +53,8 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
 			} else {
 			} else {
 				fmt.Fprintf(w, "%s\t", utils.Trunc(entry.CreatedBy, 45))
 				fmt.Fprintf(w, "%s\t", utils.Trunc(entry.CreatedBy, 45))
 			}
 			}
-			fmt.Fprintf(w, "%s", units.HumanSize(float64(entry.Size)))
+			fmt.Fprintf(w, "%s\t", units.HumanSize(float64(entry.Size)))
+			fmt.Fprintf(w, "%s", entry.Comment)
 		}
 		}
 		fmt.Fprintf(w, "\n")
 		fmt.Fprintf(w, "\n")
 	}
 	}

+ 1 - 0
api/types/types.go

@@ -49,6 +49,7 @@ type ImageHistory struct {
 	CreatedBy string
 	CreatedBy string
 	Tags      []string
 	Tags      []string
 	Size      int64
 	Size      int64
+	Comment   string
 }
 }
 
 
 // DELETE "/images/{name:.*}"
 // DELETE "/images/{name:.*}"

+ 12 - 2
docs/man/docker-history.1.md

@@ -27,10 +27,20 @@ Show the history of when and how an image was created.
 
 
 # EXAMPLES
 # EXAMPLES
     $ docker history fedora
     $ docker history fedora
-    IMAGE          CREATED          CREATED BY                                      SIZE
+    IMAGE          CREATED          CREATED BY                                      SIZE                COMMENT
     105182bb5e8b   5 days ago       /bin/sh -c #(nop) ADD file:71356d2ad59aa3119d   372.7 MB
     105182bb5e8b   5 days ago       /bin/sh -c #(nop) ADD file:71356d2ad59aa3119d   372.7 MB
     73bd853d2ea5   13 days ago      /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar   0 B
     73bd853d2ea5   13 days ago      /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar   0 B
-    511136ea3c5a   10 months ago                                                    0 B
+    511136ea3c5a   10 months ago                                                    0 B                 Imported from -
+
+## Display comments in the image history
+The `docker commit` command has a **-m** flag for adding comments to the image. These comments will be displayed in the image history.
+
+    $ sudo docker history docker:scm
+    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
+    2ac9d1098bf1        3 months ago        /bin/bash                                       241.4 MB            Added Apache to Fedora base image
+    88b42ffd1f7c        5 months ago        /bin/sh -c #(nop) ADD file:1fd8d7f9f6557cafc7   373.7 MB            
+    c69cab00d6ef        5 months ago        /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar   0 B                 
+    511136ea3c5a        19 months ago                                                       0 B                 Imported from -
 
 
 # HISTORY
 # HISTORY
 April 2014, Originally compiled by William Henry (whenry at redhat dot com)
 April 2014, Originally compiled by William Henry (whenry at redhat dot com)

+ 17 - 7
docs/sources/reference/commandline/cli.md

@@ -1152,13 +1152,23 @@ This will create a new Bash session in the container `ubuntu_bash`.
 To see how the `docker:latest` image was built:
 To see how the `docker:latest` image was built:
 
 
     $ docker history docker
     $ docker history docker
-    IMAGE                                                              CREATED             CREATED BY                                                                                                                                                 SIZE
-    3e23a5875458790b7a806f95f7ec0d0b2a5c1659bfc899c89f939f6d5b8f7094   8 days ago          /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8                                                                                                                       0 B
-    8578938dd17054dce7993d21de79e96a037400e8d28e15e7290fea4f65128a36   8 days ago          /bin/sh -c dpkg-reconfigure locales &&    locale-gen C.UTF-8 &&    /usr/sbin/update-locale LANG=C.UTF-8                                                    1.245 MB
-    be51b77efb42f67a5e96437b3e102f81e0a1399038f77bf28cea0ed23a65cf60   8 days ago          /bin/sh -c apt-get update && apt-get install -y    git    libxml2-dev    python    build-essential    make    gcc    python-dev    locales    python-pip   338.3 MB
-    4b137612be55ca69776c7f30c2d2dd0aa2e7d72059820abf3e25b629f887a084   6 weeks ago         /bin/sh -c #(nop) ADD jessie.tar.xz in /                                                                                                                   121 MB
-    750d58736b4b6cc0f9a9abe8f258cef269e3e9dceced1146503522be9f985ada   6 weeks ago         /bin/sh -c #(nop) MAINTAINER Tianon Gravi <admwiggin@gmail.com> - mkimage-debootstrap.sh -t jessie.tar.xz jessie http://http.debian.net/debian             0 B
-    511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158   9 months ago                                                                                                                                                                   0 B
+    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
+    3e23a5875458        8 days ago          /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8            0 B
+    8578938dd170        8 days ago          /bin/sh -c dpkg-reconfigure locales &&    loc   1.245 MB
+    be51b77efb42        8 days ago          /bin/sh -c apt-get update && apt-get install    338.3 MB
+    4b137612be55        6 weeks ago         /bin/sh -c #(nop) ADD jessie.tar.xz in /        121 MB
+    750d58736b4b        6 weeks ago         /bin/sh -c #(nop) MAINTAINER Tianon Gravi <ad   0 B
+    511136ea3c5a        9 months ago                                                        0 B                 Imported from -
+
+To see how the `docker:apache` image was added to a container's base image:
+
+    $ docker history docker:scm
+    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
+    2ac9d1098bf1        3 months ago        /bin/bash                                       241.4 MB            Added Apache to Fedora base image
+    88b42ffd1f7c        5 months ago        /bin/sh -c #(nop) ADD file:1fd8d7f9f6557cafc7   373.7 MB            
+    c69cab00d6ef        5 months ago        /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar   0 B                 
+    511136ea3c5a        19 months ago                                                       0 B                 Imported from -
+
 
 
 ## images
 ## images
 
 

+ 1 - 0
graph/history.go

@@ -41,6 +41,7 @@ func (s *TagStore) CmdHistory(job *engine.Job) error {
 			CreatedBy: strings.Join(img.ContainerConfig.Cmd, " "),
 			CreatedBy: strings.Join(img.ContainerConfig.Cmd, " "),
 			Tags:      lookupMap[img.ID],
 			Tags:      lookupMap[img.ID],
 			Size:      img.Size,
 			Size:      img.Size,
+			Comment:   img.Comment,
 		})
 		})
 		return nil
 		return nil
 	})
 	})

+ 43 - 0
integration-cli/docker_cli_history_test.go

@@ -82,3 +82,46 @@ func TestHistoryNonExistentImage(t *testing.T) {
 	}
 	}
 	logDone("history - history on non-existent image must pass")
 	logDone("history - history on non-existent image must pass")
 }
 }
+
+func TestHistoryImageWithComment(t *testing.T) {
+	name := "testhistoryimagewithcomment"
+	defer deleteContainer(name)
+	defer deleteImages(name)
+
+	// make a image through docker commit <container id> [ -m messages ]
+	//runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "echo", "foo")
+	runCmd := exec.Command(dockerBinary, "run", "--name", name, "busybox", "true")
+	out, _, err := runCommandWithOutput(runCmd)
+	if err != nil {
+		t.Fatalf("failed to run container: %s, %v", out, err)
+	}
+
+	waitCmd := exec.Command(dockerBinary, "wait", name)
+	if out, _, err := runCommandWithOutput(waitCmd); err != nil {
+		t.Fatalf("error thrown while waiting for container: %s, %v", out, err)
+	}
+
+	comment := "This_is_a_comment"
+
+	commitCmd := exec.Command(dockerBinary, "commit", "-m="+comment, name, name)
+	if out, _, err := runCommandWithOutput(commitCmd); err != nil {
+		t.Fatalf("failed to commit container to image: %s, %v", out, err)
+	}
+
+	// test docker history <image id> to check comment messages
+	historyCmd := exec.Command(dockerBinary, "history", name)
+	out, exitCode, err := runCommandWithOutput(historyCmd)
+	if err != nil || exitCode != 0 {
+		t.Fatalf("failed to get image history: %s, %v", out, err)
+	}
+
+	outputTabs := strings.Fields(strings.Split(out, "\n")[1])
+	//outputTabs := regexp.MustCompile("  +").Split(outputLine, -1)
+	actualValue := outputTabs[len(outputTabs)-1]
+
+	if !strings.Contains(actualValue, comment) {
+		t.Fatalf("Expected comments %q, but found %q", comment, actualValue)
+	}
+
+	logDone("history - history on image with comment")
+}