Signed-off-by: Tibor Vass <tibor@docker.com>
| ... | ... |
@@ -54,7 +54,7 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
|
| 54 | 54 |
fmt.Fprintf(w, "%s\t", utils.Trunc(entry.CreatedBy, 45)) |
| 55 | 55 |
} |
| 56 | 56 |
fmt.Fprintf(w, "%s\t", units.HumanSize(float64(entry.Size))) |
| 57 |
- fmt.Fprintf(w, "%s\n", entry.Comment) |
|
| 57 |
+ fmt.Fprintf(w, "%s", entry.Comment) |
|
| 58 | 58 |
} |
| 59 | 59 |
fmt.Fprintf(w, "\n") |
| 60 | 60 |
} |
| ... | ... |
@@ -26,21 +26,13 @@ Show the history of when and how an image was created. |
| 26 | 26 |
Only show numeric IDs. The default is *false*. |
| 27 | 27 |
|
| 28 | 28 |
# EXAMPLES |
| 29 |
-<<<<<<< HEAD |
|
| 30 | 29 |
$ docker history fedora |
| 31 |
- IMAGE CREATED CREATED BY SIZE |
|
| 32 |
-======= |
|
| 33 |
- |
|
| 34 |
-## Show the history of images created through docker build command |
|
| 35 |
- |
|
| 36 |
- $ sudo docker history fedora |
|
| 37 | 30 |
IMAGE CREATED CREATED BY SIZE COMMENT |
| 38 |
->>>>>>> Add comment column in docker history command output |
|
| 39 | 31 |
105182bb5e8b 5 days ago /bin/sh -c #(nop) ADD file:71356d2ad59aa3119d 372.7 MB |
| 40 | 32 |
73bd853d2ea5 13 days ago /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar 0 B |
| 41 | 33 |
511136ea3c5a 10 months ago 0 B Imported from - |
| 42 | 34 |
|
| 43 |
-## Show the history of images created through docker commit command |
|
| 35 |
+## Display comments in the image history |
|
| 44 | 36 |
The `docker commit` command has a **-m** flag for adding comments to the image. These comments will be displayed in the image history. |
| 45 | 37 |
|
| 46 | 38 |
$ sudo docker history docker:scm |
| ... | ... |
@@ -1151,17 +1151,7 @@ This will create a new Bash session in the container `ubuntu_bash`. |
| 1151 | 1151 |
|
| 1152 | 1152 |
To see how the `docker:latest` image was built: |
| 1153 | 1153 |
|
| 1154 |
-<<<<<<< HEAD |
|
| 1155 | 1154 |
$ docker history docker |
| 1156 |
- IMAGE CREATED CREATED BY SIZE |
|
| 1157 |
- 3e23a5875458790b7a806f95f7ec0d0b2a5c1659bfc899c89f939f6d5b8f7094 8 days ago /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8 0 B |
|
| 1158 |
- 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 |
|
| 1159 |
- 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 |
|
| 1160 |
- 4b137612be55ca69776c7f30c2d2dd0aa2e7d72059820abf3e25b629f887a084 6 weeks ago /bin/sh -c #(nop) ADD jessie.tar.xz in / 121 MB |
|
| 1161 |
- 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 |
|
| 1162 |
- 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158 9 months ago 0 B |
|
| 1163 |
-======= |
|
| 1164 |
- $ sudo docker history docker |
|
| 1165 | 1155 |
IMAGE CREATED CREATED BY SIZE COMMENT |
| 1166 | 1156 |
3e23a5875458 8 days ago /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8 0 B |
| 1167 | 1157 |
8578938dd170 8 days ago /bin/sh -c dpkg-reconfigure locales && loc 1.245 MB |
| ... | ... |
@@ -1172,14 +1162,13 @@ To see how the `docker:latest` image was built: |
| 1172 | 1172 |
|
| 1173 | 1173 |
To see how the `docker:apache` image was added to a container's base image: |
| 1174 | 1174 |
|
| 1175 |
- $ sudo docker history docker:scm |
|
| 1175 |
+ $ docker history docker:scm |
|
| 1176 | 1176 |
IMAGE CREATED CREATED BY SIZE COMMENT |
| 1177 | 1177 |
2ac9d1098bf1 3 months ago /bin/bash 241.4 MB Added Apache to Fedora base image |
| 1178 | 1178 |
88b42ffd1f7c 5 months ago /bin/sh -c #(nop) ADD file:1fd8d7f9f6557cafc7 373.7 MB |
| 1179 | 1179 |
c69cab00d6ef 5 months ago /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar 0 B |
| 1180 | 1180 |
511136ea3c5a 19 months ago 0 B Imported from - |
| 1181 | 1181 |
|
| 1182 |
->>>>>>> Add comment column in docker history command output |
|
| 1183 | 1182 |
|
| 1184 | 1183 |
## images |
| 1185 | 1184 |
|
| ... | ... |
@@ -3,7 +3,6 @@ package main |
| 3 | 3 |
import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
"os/exec" |
| 6 |
- "regexp" |
|
| 7 | 6 |
"strings" |
| 8 | 7 |
"testing" |
| 9 | 8 |
) |
| ... | ... |
@@ -85,46 +84,43 @@ func TestHistoryNonExistentImage(t *testing.T) {
|
| 85 | 85 |
} |
| 86 | 86 |
|
| 87 | 87 |
func TestHistoryImageWithComment(t *testing.T) {
|
| 88 |
+ name := "testhistoryimagewithcomment" |
|
| 89 |
+ defer deleteContainer(name) |
|
| 90 |
+ defer deleteImages(name) |
|
| 88 | 91 |
|
| 89 | 92 |
// make a image through docker commit <container id> [ -m messages ] |
| 90 |
- runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "echo", "foo") |
|
| 91 |
- out, _, _, err := runCommandWithStdoutStderr(runCmd) |
|
| 93 |
+ //runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "echo", "foo") |
|
| 94 |
+ runCmd := exec.Command(dockerBinary, "run", "--name", name, "busybox", "true") |
|
| 95 |
+ out, _, err := runCommandWithOutput(runCmd) |
|
| 92 | 96 |
if err != nil {
|
| 93 | 97 |
t.Fatalf("failed to run container: %s, %v", out, err)
|
| 94 | 98 |
} |
| 95 | 99 |
|
| 96 |
- cleanedContainerID := stripTrailingCharacters(out) |
|
| 97 |
- |
|
| 98 |
- waitCmd := exec.Command(dockerBinary, "wait", cleanedContainerID) |
|
| 99 |
- if _, _, err = runCommandWithOutput(waitCmd); err != nil {
|
|
| 100 |
+ waitCmd := exec.Command(dockerBinary, "wait", name) |
|
| 101 |
+ if out, _, err := runCommandWithOutput(waitCmd); err != nil {
|
|
| 100 | 102 |
t.Fatalf("error thrown while waiting for container: %s, %v", out, err)
|
| 101 | 103 |
} |
| 102 | 104 |
|
| 103 |
- commitCmd := exec.Command(dockerBinary, "commit", "-m=This is a comment", cleanedContainerID) |
|
| 104 |
- out, _, err = runCommandWithOutput(commitCmd) |
|
| 105 |
- if err != nil {
|
|
| 105 |
+ comment := "This_is_a_comment" |
|
| 106 |
+ |
|
| 107 |
+ commitCmd := exec.Command(dockerBinary, "commit", "-m="+comment, name, name) |
|
| 108 |
+ if out, _, err := runCommandWithOutput(commitCmd); err != nil {
|
|
| 106 | 109 |
t.Fatalf("failed to commit container to image: %s, %v", out, err)
|
| 107 | 110 |
} |
| 108 | 111 |
|
| 109 |
- cleanedImageID := stripTrailingCharacters(out) |
|
| 110 |
- deleteContainer(cleanedContainerID) |
|
| 111 |
- defer deleteImages(cleanedImageID) |
|
| 112 |
- |
|
| 113 | 112 |
// test docker history <image id> to check comment messages |
| 114 |
- historyCmd := exec.Command(dockerBinary, "history", cleanedImageID) |
|
| 113 |
+ historyCmd := exec.Command(dockerBinary, "history", name) |
|
| 115 | 114 |
out, exitCode, err := runCommandWithOutput(historyCmd) |
| 116 | 115 |
if err != nil || exitCode != 0 {
|
| 117 | 116 |
t.Fatalf("failed to get image history: %s, %v", out, err)
|
| 118 | 117 |
} |
| 119 | 118 |
|
| 120 |
- expectedValue := "This is a comment" |
|
| 121 |
- |
|
| 122 |
- outputLine := strings.Split(out, "\n")[1] |
|
| 123 |
- outputTabs := regexp.MustCompile(" +").Split(outputLine, -1)
|
|
| 119 |
+ outputTabs := strings.Fields(strings.Split(out, "\n")[1]) |
|
| 120 |
+ //outputTabs := regexp.MustCompile(" +").Split(outputLine, -1)
|
|
| 124 | 121 |
actualValue := outputTabs[len(outputTabs)-1] |
| 125 | 122 |
|
| 126 |
- if !strings.Contains(actualValue, expectedValue) {
|
|
| 127 |
- t.Fatalf("Expected comments \"%s\", but found \"%s\"", expectedValue, actualValue)
|
|
| 123 |
+ if !strings.Contains(actualValue, comment) {
|
|
| 124 |
+ t.Fatalf("Expected comments %q, but found %q", comment, actualValue)
|
|
| 128 | 125 |
} |
| 129 | 126 |
|
| 130 | 127 |
logDone("history - history on image with comment")
|