Browse code

Implement teardown removeAllImages

Signed-off-by: Alexander Morozov <lk4d4@docker.com>

Alexander Morozov authored on 2015/04/24 06:39:31
Showing 20 changed files
... ...
@@ -30,6 +30,7 @@ type DockerSuite struct {
30 30
 
31 31
 func (s *DockerSuite) TearDownTest(c *check.C) {
32 32
 	deleteAllContainers()
33
+	deleteAllImages()
33 34
 	s.TimerSuite.TearDownTest(c)
34 35
 }
35 36
 
... ...
@@ -632,7 +632,6 @@ func (s *DockerSuite) TestContainerApiCommit(c *check.C) {
632 632
 	if err := json.Unmarshal(b, &img); err != nil {
633 633
 		c.Fatal(err)
634 634
 	}
635
-	defer deleteImages(img.Id)
636 635
 
637 636
 	cmd, err := inspectField(img.Id, "Config.Cmd")
638 637
 	if err != nil {
... ...
@@ -30,7 +30,6 @@ func (s *DockerSuite) TestApiImagesFilter(c *check.C) {
30 30
 	name := "utest:tag1"
31 31
 	name2 := "utest/docker:tag2"
32 32
 	name3 := "utest:5000/docker:tag3"
33
-	defer deleteImages(name, name2, name3)
34 33
 	for _, n := range []string{name, name2, name3} {
35 34
 		if out, err := exec.Command(dockerBinary, "tag", "busybox", n).CombinedOutput(); err != nil {
36 35
 			c.Fatal(err, out)
... ...
@@ -74,7 +73,6 @@ func (s *DockerSuite) TestApiImagesSaveAndLoad(c *check.C) {
74 74
 		c.Fatal(err)
75 75
 	}
76 76
 	id := strings.TrimSpace(out)
77
-	defer deleteImages("saveandload")
78 77
 
79 78
 	status, body, err := sockRequestRaw("GET", "/images/"+id+"/get", nil, "")
80 79
 	c.Assert(status, check.Equals, http.StatusOK)
... ...
@@ -27,7 +27,6 @@ import (
27 27
 
28 28
 func (s *DockerSuite) TestBuildJSONEmptyRun(c *check.C) {
29 29
 	name := "testbuildjsonemptyrun"
30
-	defer deleteImages(name)
31 30
 
32 31
 	_, err := buildImage(
33 32
 		name,
... ...
@@ -45,7 +44,6 @@ func (s *DockerSuite) TestBuildJSONEmptyRun(c *check.C) {
45 45
 
46 46
 func (s *DockerSuite) TestBuildEmptyWhitespace(c *check.C) {
47 47
 	name := "testbuildemptywhitespace"
48
-	defer deleteImages(name)
49 48
 
50 49
 	_, err := buildImage(
51 50
 		name,
... ...
@@ -65,7 +63,6 @@ func (s *DockerSuite) TestBuildEmptyWhitespace(c *check.C) {
65 65
 
66 66
 func (s *DockerSuite) TestBuildShCmdJSONEntrypoint(c *check.C) {
67 67
 	name := "testbuildshcmdjsonentrypoint"
68
-	defer deleteImages(name)
69 68
 
70 69
 	_, err := buildImage(
71 70
 		name,
... ...
@@ -99,7 +96,6 @@ func (s *DockerSuite) TestBuildShCmdJSONEntrypoint(c *check.C) {
99 99
 
100 100
 func (s *DockerSuite) TestBuildEnvironmentReplacementUser(c *check.C) {
101 101
 	name := "testbuildenvironmentreplacement"
102
-	defer deleteImages(name)
103 102
 
104 103
 	_, err := buildImage(name, `
105 104
   FROM scratch
... ...
@@ -123,7 +119,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementUser(c *check.C) {
123 123
 
124 124
 func (s *DockerSuite) TestBuildEnvironmentReplacementVolume(c *check.C) {
125 125
 	name := "testbuildenvironmentreplacement"
126
-	defer deleteImages(name)
127 126
 
128 127
 	_, err := buildImage(name, `
129 128
   FROM scratch
... ...
@@ -153,7 +148,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementVolume(c *check.C) {
153 153
 
154 154
 func (s *DockerSuite) TestBuildEnvironmentReplacementExpose(c *check.C) {
155 155
 	name := "testbuildenvironmentreplacement"
156
-	defer deleteImages(name)
157 156
 
158 157
 	_, err := buildImage(name, `
159 158
   FROM scratch
... ...
@@ -183,7 +177,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementExpose(c *check.C) {
183 183
 
184 184
 func (s *DockerSuite) TestBuildEnvironmentReplacementWorkdir(c *check.C) {
185 185
 	name := "testbuildenvironmentreplacement"
186
-	defer deleteImages(name)
187 186
 
188 187
 	_, err := buildImage(name, `
189 188
   FROM busybox
... ...
@@ -200,7 +193,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementWorkdir(c *check.C) {
200 200
 
201 201
 func (s *DockerSuite) TestBuildEnvironmentReplacementAddCopy(c *check.C) {
202 202
 	name := "testbuildenvironmentreplacement"
203
-	defer deleteImages(name)
204 203
 
205 204
 	ctx, err := fakeContext(`
206 205
   FROM scratch
... ...
@@ -236,8 +228,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementAddCopy(c *check.C) {
236 236
 func (s *DockerSuite) TestBuildEnvironmentReplacementEnv(c *check.C) {
237 237
 	name := "testbuildenvironmentreplacement"
238 238
 
239
-	defer deleteImages(name)
240
-
241 239
 	_, err := buildImage(name,
242 240
 		`
243 241
   FROM busybox
... ...
@@ -305,8 +295,6 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementEnv(c *check.C) {
305 305
 func (s *DockerSuite) TestBuildHandleEscapes(c *check.C) {
306 306
 	name := "testbuildhandleescapes"
307 307
 
308
-	defer deleteImages(name)
309
-
310 308
 	_, err := buildImage(name,
311 309
 		`
312 310
   FROM scratch
... ...
@@ -395,8 +383,6 @@ func (s *DockerSuite) TestBuildOnBuildLowercase(c *check.C) {
395 395
 	name := "testbuildonbuildlowercase"
396 396
 	name2 := "testbuildonbuildlowercase2"
397 397
 
398
-	defer deleteImages(name, name2)
399
-
400 398
 	_, err := buildImage(name,
401 399
 		`
402 400
   FROM busybox
... ...
@@ -427,7 +413,6 @@ func (s *DockerSuite) TestBuildOnBuildLowercase(c *check.C) {
427 427
 
428 428
 func (s *DockerSuite) TestBuildEnvEscapes(c *check.C) {
429 429
 	name := "testbuildenvescapes"
430
-	defer deleteImages(name)
431 430
 	_, err := buildImage(name,
432 431
 		`
433 432
     FROM busybox
... ...
@@ -450,7 +435,6 @@ func (s *DockerSuite) TestBuildEnvEscapes(c *check.C) {
450 450
 
451 451
 func (s *DockerSuite) TestBuildEnvOverwrite(c *check.C) {
452 452
 	name := "testbuildenvoverwrite"
453
-	defer deleteImages(name)
454 453
 
455 454
 	_, err := buildImage(name,
456 455
 		`
... ...
@@ -478,8 +462,6 @@ func (s *DockerSuite) TestBuildEnvOverwrite(c *check.C) {
478 478
 
479 479
 func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainerInSourceImage(c *check.C) {
480 480
 	name := "testbuildonbuildforbiddenmaintainerinsourceimage"
481
-	defer deleteImages("onbuild")
482
-	defer deleteImages(name)
483 481
 
484 482
 	createCmd := exec.Command(dockerBinary, "create", "busybox", "true")
485 483
 	out, _, _, err := runCommandWithStdoutStderr(createCmd)
... ...
@@ -510,8 +492,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainerInSourceImage(c *check.
510 510
 
511 511
 func (s *DockerSuite) TestBuildOnBuildForbiddenFromInSourceImage(c *check.C) {
512 512
 	name := "testbuildonbuildforbiddenfrominsourceimage"
513
-	defer deleteImages("onbuild")
514
-	defer deleteImages(name)
515 513
 
516 514
 	createCmd := exec.Command(dockerBinary, "create", "busybox", "true")
517 515
 	out, _, _, err := runCommandWithStdoutStderr(createCmd)
... ...
@@ -542,8 +522,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenFromInSourceImage(c *check.C) {
542 542
 
543 543
 func (s *DockerSuite) TestBuildOnBuildForbiddenChainedInSourceImage(c *check.C) {
544 544
 	name := "testbuildonbuildforbiddenchainedinsourceimage"
545
-	defer deleteImages("onbuild")
546
-	defer deleteImages(name)
547 545
 
548 546
 	createCmd := exec.Command(dockerBinary, "create", "busybox", "true")
549 547
 	out, _, _, err := runCommandWithStdoutStderr(createCmd)
... ...
@@ -576,9 +554,6 @@ func (s *DockerSuite) TestBuildOnBuildCmdEntrypointJSON(c *check.C) {
576 576
 	name1 := "onbuildcmd"
577 577
 	name2 := "onbuildgenerated"
578 578
 
579
-	defer deleteImages(name2)
580
-	defer deleteImages(name1)
581
-
582 579
 	_, err := buildImage(name1, `
583 580
 FROM busybox
584 581
 ONBUILD CMD ["hello world"]
... ...
@@ -611,9 +586,6 @@ func (s *DockerSuite) TestBuildOnBuildEntrypointJSON(c *check.C) {
611 611
 	name1 := "onbuildcmd"
612 612
 	name2 := "onbuildgenerated"
613 613
 
614
-	defer deleteImages(name2)
615
-	defer deleteImages(name1)
616
-
617 614
 	_, err := buildImage(name1, `
618 615
 FROM busybox
619 616
 ONBUILD ENTRYPOINT ["echo"]`,
... ...
@@ -642,7 +614,6 @@ ONBUILD ENTRYPOINT ["echo"]`,
642 642
 
643 643
 func (s *DockerSuite) TestBuildCacheADD(c *check.C) {
644 644
 	name := "testbuildtwoimageswithadd"
645
-	defer deleteImages(name)
646 645
 	server, err := fakeStorage(map[string]string{
647 646
 		"robots.txt": "hello",
648 647
 		"index.html": "world",
... ...
@@ -677,7 +648,6 @@ func (s *DockerSuite) TestBuildCacheADD(c *check.C) {
677 677
 
678 678
 func (s *DockerSuite) TestBuildLastModified(c *check.C) {
679 679
 	name := "testbuildlastmodified"
680
-	defer deleteImages(name)
681 680
 
682 681
 	server, err := fakeStorage(map[string]string{
683 682
 		"file": "hello",
... ...
@@ -743,7 +713,6 @@ RUN ls -le /file`
743 743
 
744 744
 func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
745 745
 	name := "foobuildsixtysteps"
746
-	defer deleteImages(name)
747 746
 	ctx, err := fakeContext("FROM scratch\n"+strings.Repeat("ADD foo /\n", 60),
748 747
 		map[string]string{
749 748
 			"foo": "test1",
... ...
@@ -760,7 +729,6 @@ func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
760 760
 
761 761
 func (s *DockerSuite) TestBuildAddSingleFileToRoot(c *check.C) {
762 762
 	name := "testaddimg"
763
-	defer deleteImages(name)
764 763
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
765 764
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
766 765
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -786,7 +754,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
786 786
 // Issue #3960: "ADD src ." hangs
787 787
 func (s *DockerSuite) TestBuildAddSingleFileToWorkdir(c *check.C) {
788 788
 	name := "testaddsinglefiletoworkdir"
789
-	defer deleteImages(name)
790 789
 	ctx, err := fakeContext(`FROM busybox
791 790
 ADD test_file .`,
792 791
 		map[string]string{
... ...
@@ -813,7 +780,6 @@ ADD test_file .`,
813 813
 
814 814
 func (s *DockerSuite) TestBuildAddSingleFileToExistDir(c *check.C) {
815 815
 	name := "testaddsinglefiletoexistdir"
816
-	defer deleteImages(name)
817 816
 	ctx, err := fakeContext(`FROM busybox
818 817
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
819 818
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -847,7 +813,6 @@ func (s *DockerSuite) TestBuildCopyAddMultipleFiles(c *check.C) {
847 847
 	defer server.Close()
848 848
 
849 849
 	name := "testcopymultiplefilestofile"
850
-	defer deleteImages(name)
851 850
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
852 851
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
853 852
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -884,7 +849,6 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
884 884
 
885 885
 func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
886 886
 	name := "testaddmultiplefilestofile"
887
-	defer deleteImages(name)
888 887
 	ctx, err := fakeContext(`FROM scratch
889 888
 	ADD file1.txt file2.txt test
890 889
 	`,
... ...
@@ -906,7 +870,6 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
906 906
 
907 907
 func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
908 908
 	name := "testjsonaddmultiplefilestofile"
909
-	defer deleteImages(name)
910 909
 	ctx, err := fakeContext(`FROM scratch
911 910
 	ADD ["file1.txt", "file2.txt", "test"]
912 911
 	`,
... ...
@@ -928,7 +891,6 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
928 928
 
929 929
 func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
930 930
 	name := "testaddmultiplefilestofilewild"
931
-	defer deleteImages(name)
932 931
 	ctx, err := fakeContext(`FROM scratch
933 932
 	ADD file*.txt test
934 933
 	`,
... ...
@@ -950,7 +912,6 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
950 950
 
951 951
 func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
952 952
 	name := "testjsonaddmultiplefilestofilewild"
953
-	defer deleteImages(name)
954 953
 	ctx, err := fakeContext(`FROM scratch
955 954
 	ADD ["file*.txt", "test"]
956 955
 	`,
... ...
@@ -972,7 +933,6 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
972 972
 
973 973
 func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
974 974
 	name := "testcopymultiplefilestofile"
975
-	defer deleteImages(name)
976 975
 	ctx, err := fakeContext(`FROM scratch
977 976
 	COPY file1.txt file2.txt test
978 977
 	`,
... ...
@@ -994,7 +954,6 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
994 994
 
995 995
 func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
996 996
 	name := "testjsoncopymultiplefilestofile"
997
-	defer deleteImages(name)
998 997
 	ctx, err := fakeContext(`FROM scratch
999 998
 	COPY ["file1.txt", "file2.txt", "test"]
1000 999
 	`,
... ...
@@ -1016,7 +975,6 @@ func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
1016 1016
 
1017 1017
 func (s *DockerSuite) TestBuildAddFileWithWhitespace(c *check.C) {
1018 1018
 	name := "testaddfilewithwhitespace"
1019
-	defer deleteImages(name)
1020 1019
 	ctx, err := fakeContext(`FROM busybox
1021 1020
 RUN mkdir "/test dir"
1022 1021
 RUN mkdir "/test_dir"
... ...
@@ -1052,7 +1010,6 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
1052 1052
 
1053 1053
 func (s *DockerSuite) TestBuildCopyFileWithWhitespace(c *check.C) {
1054 1054
 	name := "testcopyfilewithwhitespace"
1055
-	defer deleteImages(name)
1056 1055
 	ctx, err := fakeContext(`FROM busybox
1057 1056
 RUN mkdir "/test dir"
1058 1057
 RUN mkdir "/test_dir"
... ...
@@ -1088,7 +1045,6 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
1088 1088
 
1089 1089
 func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C) {
1090 1090
 	name := "testaddmultiplefilestofilewithwhitespace"
1091
-	defer deleteImages(name)
1092 1091
 	ctx, err := fakeContext(`FROM busybox
1093 1092
 	ADD [ "test file1", "test file2", "test" ]
1094 1093
     `,
... ...
@@ -1110,7 +1066,6 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C)
1110 1110
 
1111 1111
 func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C) {
1112 1112
 	name := "testcopymultiplefilestofilewithwhitespace"
1113
-	defer deleteImages(name)
1114 1113
 	ctx, err := fakeContext(`FROM busybox
1115 1114
 	COPY [ "test file1", "test file2", "test" ]
1116 1115
         `,
... ...
@@ -1132,7 +1087,6 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C)
1132 1132
 
1133 1133
 func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
1134 1134
 	name := "testcopywildcard"
1135
-	defer deleteImages(name)
1136 1135
 	server, err := fakeStorage(map[string]string{
1137 1136
 		"robots.txt": "hello",
1138 1137
 		"index.html": "world",
... ...
@@ -1183,7 +1137,6 @@ func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
1183 1183
 
1184 1184
 func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
1185 1185
 	name := "testcopywildcardnofind"
1186
-	defer deleteImages(name)
1187 1186
 	ctx, err := fakeContext(`FROM busybox
1188 1187
 	COPY file*.txt /tmp/
1189 1188
 	`, nil)
... ...
@@ -1204,7 +1157,6 @@ func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
1204 1204
 
1205 1205
 func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
1206 1206
 	name := "testcopywildcardcache"
1207
-	defer deleteImages(name)
1208 1207
 	ctx, err := fakeContext(`FROM busybox
1209 1208
 	COPY file1.txt /tmp/`,
1210 1209
 		map[string]string{
... ...
@@ -1238,7 +1190,6 @@ func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
1238 1238
 
1239 1239
 func (s *DockerSuite) TestBuildAddSingleFileToNonExistingDir(c *check.C) {
1240 1240
 	name := "testaddsinglefiletononexistingdir"
1241
-	defer deleteImages(name)
1242 1241
 	ctx, err := fakeContext(`FROM busybox
1243 1242
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1244 1243
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1264,7 +1215,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1264 1264
 
1265 1265
 func (s *DockerSuite) TestBuildAddDirContentToRoot(c *check.C) {
1266 1266
 	name := "testadddircontenttoroot"
1267
-	defer deleteImages(name)
1268 1267
 	ctx, err := fakeContext(`FROM busybox
1269 1268
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1270 1269
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1288,7 +1238,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1288 1288
 
1289 1289
 func (s *DockerSuite) TestBuildAddDirContentToExistingDir(c *check.C) {
1290 1290
 	name := "testadddircontenttoexistingdir"
1291
-	defer deleteImages(name)
1292 1291
 	ctx, err := fakeContext(`FROM busybox
1293 1292
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1294 1293
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1314,7 +1263,6 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
1314 1314
 
1315 1315
 func (s *DockerSuite) TestBuildAddWholeDirToRoot(c *check.C) {
1316 1316
 	name := "testaddwholedirtoroot"
1317
-	defer deleteImages(name)
1318 1317
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1319 1318
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1320 1319
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1342,7 +1290,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1342 1342
 // Testing #5941
1343 1343
 func (s *DockerSuite) TestBuildAddEtcToRoot(c *check.C) {
1344 1344
 	name := "testaddetctoroot"
1345
-	defer deleteImages(name)
1346 1345
 	ctx, err := fakeContext(`FROM scratch
1347 1346
 ADD . /`,
1348 1347
 		map[string]string{
... ...
@@ -1361,7 +1308,6 @@ ADD . /`,
1361 1361
 // Testing #9401
1362 1362
 func (s *DockerSuite) TestBuildAddPreservesFilesSpecialBits(c *check.C) {
1363 1363
 	name := "testaddpreservesfilesspecialbits"
1364
-	defer deleteImages(name)
1365 1364
 	ctx, err := fakeContext(`FROM busybox
1366 1365
 ADD suidbin /usr/bin/suidbin
1367 1366
 RUN chmod 4755 /usr/bin/suidbin
... ...
@@ -1384,7 +1330,6 @@ RUN [ $(ls -l /usr/bin/suidbin | awk '{print $1}') = '-rwsr-xr-x' ]`,
1384 1384
 
1385 1385
 func (s *DockerSuite) TestBuildCopySingleFileToRoot(c *check.C) {
1386 1386
 	name := "testcopysinglefiletoroot"
1387
-	defer deleteImages(name)
1388 1387
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1389 1388
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1390 1389
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1410,7 +1355,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1410 1410
 // Issue #3960: "ADD src ." hangs - adapted for COPY
1411 1411
 func (s *DockerSuite) TestBuildCopySingleFileToWorkdir(c *check.C) {
1412 1412
 	name := "testcopysinglefiletoworkdir"
1413
-	defer deleteImages(name)
1414 1413
 	ctx, err := fakeContext(`FROM busybox
1415 1414
 COPY test_file .`,
1416 1415
 		map[string]string{
... ...
@@ -1437,7 +1381,6 @@ COPY test_file .`,
1437 1437
 
1438 1438
 func (s *DockerSuite) TestBuildCopySingleFileToExistDir(c *check.C) {
1439 1439
 	name := "testcopysinglefiletoexistdir"
1440
-	defer deleteImages(name)
1441 1440
 	ctx, err := fakeContext(`FROM busybox
1442 1441
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1443 1442
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1463,7 +1406,6 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
1463 1463
 
1464 1464
 func (s *DockerSuite) TestBuildCopySingleFileToNonExistDir(c *check.C) {
1465 1465
 	name := "testcopysinglefiletononexistdir"
1466
-	defer deleteImages(name)
1467 1466
 	ctx, err := fakeContext(`FROM busybox
1468 1467
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1469 1468
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1488,7 +1430,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1488 1488
 
1489 1489
 func (s *DockerSuite) TestBuildCopyDirContentToRoot(c *check.C) {
1490 1490
 	name := "testcopydircontenttoroot"
1491
-	defer deleteImages(name)
1492 1491
 	ctx, err := fakeContext(`FROM busybox
1493 1492
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1494 1493
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1512,7 +1453,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1512 1512
 
1513 1513
 func (s *DockerSuite) TestBuildCopyDirContentToExistDir(c *check.C) {
1514 1514
 	name := "testcopydircontenttoexistdir"
1515
-	defer deleteImages(name)
1516 1515
 	ctx, err := fakeContext(`FROM busybox
1517 1516
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1518 1517
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1538,7 +1478,6 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
1538 1538
 
1539 1539
 func (s *DockerSuite) TestBuildCopyWholeDirToRoot(c *check.C) {
1540 1540
 	name := "testcopywholedirtoroot"
1541
-	defer deleteImages(name)
1542 1541
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1543 1542
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
1544 1543
 RUN echo 'dockerio:x:1001:' >> /etc/group
... ...
@@ -1565,7 +1504,6 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1565 1565
 
1566 1566
 func (s *DockerSuite) TestBuildCopyEtcToRoot(c *check.C) {
1567 1567
 	name := "testcopyetctoroot"
1568
-	defer deleteImages(name)
1569 1568
 	ctx, err := fakeContext(`FROM scratch
1570 1569
 COPY . /`,
1571 1570
 		map[string]string{
... ...
@@ -1583,7 +1521,6 @@ COPY . /`,
1583 1583
 
1584 1584
 func (s *DockerSuite) TestBuildCopyDisallowRemote(c *check.C) {
1585 1585
 	name := "testcopydisallowremote"
1586
-	defer deleteImages(name)
1587 1586
 	_, out, err := buildImageWithOut(name, `FROM scratch
1588 1587
 COPY https://index.docker.io/robots.txt /`,
1589 1588
 		true)
... ...
@@ -1604,7 +1541,6 @@ func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) {
1604 1604
 	var (
1605 1605
 		name = "test-link-absolute"
1606 1606
 	)
1607
-	defer deleteImages(name)
1608 1607
 	ctx, err := fakeContext(dockerfile, nil)
1609 1608
 	if err != nil {
1610 1609
 		c.Fatal(err)
... ...
@@ -1692,7 +1628,6 @@ func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) {
1692 1692
 		name       = "test-link-absolute-volume"
1693 1693
 		dockerfile = ""
1694 1694
 	)
1695
-	defer deleteImages(name)
1696 1695
 
1697 1696
 	tempDir, err := ioutil.TempDir("", "test-link-absolute-volume-temp-")
1698 1697
 	if err != nil {
... ...
@@ -1737,7 +1672,6 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1737 1737
 
1738 1738
 	{
1739 1739
 		name := "testbuildinaccessiblefiles"
1740
-		defer deleteImages(name)
1741 1740
 		ctx, err := fakeContext("FROM scratch\nADD . /foo/", map[string]string{"fileWithoutReadAccess": "foo"})
1742 1741
 		if err != nil {
1743 1742
 			c.Fatal(err)
... ...
@@ -1770,7 +1704,6 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1770 1770
 	}
1771 1771
 	{
1772 1772
 		name := "testbuildinaccessibledirectory"
1773
-		defer deleteImages(name)
1774 1773
 		ctx, err := fakeContext("FROM scratch\nADD . /foo/", map[string]string{"directoryWeCantStat/bar": "foo"})
1775 1774
 		if err != nil {
1776 1775
 			c.Fatal(err)
... ...
@@ -1809,7 +1742,6 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1809 1809
 	}
1810 1810
 	{
1811 1811
 		name := "testlinksok"
1812
-		defer deleteImages(name)
1813 1812
 		ctx, err := fakeContext("FROM scratch\nADD . /foo/", nil)
1814 1813
 		if err != nil {
1815 1814
 			c.Fatal(err)
... ...
@@ -1829,7 +1761,6 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1829 1829
 	}
1830 1830
 	{
1831 1831
 		name := "testbuildignoredinaccessible"
1832
-		defer deleteImages(name)
1833 1832
 		ctx, err := fakeContext("FROM scratch\nADD . /foo/",
1834 1833
 			map[string]string{
1835 1834
 				"directoryWeCantStat/bar": "foo",
... ...
@@ -1867,7 +1798,6 @@ func (s *DockerSuite) TestBuildForceRm(c *check.C) {
1867 1867
 		c.Fatalf("failed to get the container count: %s", err)
1868 1868
 	}
1869 1869
 	name := "testbuildforcerm"
1870
-	defer deleteImages(name)
1871 1870
 	ctx, err := fakeContext("FROM scratch\nRUN true\nRUN thiswillfail", nil)
1872 1871
 	if err != nil {
1873 1872
 		c.Fatal(err)
... ...
@@ -1903,7 +1833,6 @@ func (s *DockerSuite) TestBuildCancelationKillsSleep(c *check.C) {
1903 1903
 	defer wg.Wait()
1904 1904
 
1905 1905
 	name := "testbuildcancelation"
1906
-	defer deleteImages(name)
1907 1906
 
1908 1907
 	// (Note: one year, will never finish)
1909 1908
 	ctx, err := fakeContext("FROM busybox\nRUN sleep 31536000", nil)
... ...
@@ -2018,7 +1947,6 @@ func (s *DockerSuite) TestBuildCancelationKillsSleep(c *check.C) {
2018 2018
 
2019 2019
 func (s *DockerSuite) TestBuildRm(c *check.C) {
2020 2020
 	name := "testbuildrm"
2021
-	defer deleteImages(name)
2022 2021
 	ctx, err := fakeContext("FROM scratch\nADD foo /\nADD foo /", map[string]string{"foo": "bar"})
2023 2022
 	if err != nil {
2024 2023
 		c.Fatal(err)
... ...
@@ -2112,7 +2040,6 @@ func (s *DockerSuite) TestBuildWithVolumes(c *check.C) {
2112 2112
 			"/test8]": emptyMap,
2113 2113
 		}
2114 2114
 	)
2115
-	defer deleteImages(name)
2116 2115
 	_, err := buildImage(name,
2117 2116
 		`FROM scratch
2118 2117
 		VOLUME /test1
... ...
@@ -2146,7 +2073,6 @@ func (s *DockerSuite) TestBuildWithVolumes(c *check.C) {
2146 2146
 func (s *DockerSuite) TestBuildMaintainer(c *check.C) {
2147 2147
 	name := "testbuildmaintainer"
2148 2148
 	expected := "dockerio"
2149
-	defer deleteImages(name)
2150 2149
 	_, err := buildImage(name,
2151 2150
 		`FROM scratch
2152 2151
         MAINTAINER dockerio`,
... ...
@@ -2166,7 +2092,6 @@ func (s *DockerSuite) TestBuildMaintainer(c *check.C) {
2166 2166
 func (s *DockerSuite) TestBuildUser(c *check.C) {
2167 2167
 	name := "testbuilduser"
2168 2168
 	expected := "dockerio"
2169
-	defer deleteImages(name)
2170 2169
 	_, err := buildImage(name,
2171 2170
 		`FROM busybox
2172 2171
 		RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -2188,7 +2113,6 @@ func (s *DockerSuite) TestBuildUser(c *check.C) {
2188 2188
 func (s *DockerSuite) TestBuildRelativeWorkdir(c *check.C) {
2189 2189
 	name := "testbuildrelativeworkdir"
2190 2190
 	expected := "/test2/test3"
2191
-	defer deleteImages(name)
2192 2191
 	_, err := buildImage(name,
2193 2192
 		`FROM busybox
2194 2193
 		RUN [ "$PWD" = '/' ]
... ...
@@ -2214,7 +2138,6 @@ func (s *DockerSuite) TestBuildRelativeWorkdir(c *check.C) {
2214 2214
 func (s *DockerSuite) TestBuildWorkdirWithEnvVariables(c *check.C) {
2215 2215
 	name := "testbuildworkdirwithenvvariables"
2216 2216
 	expected := "/test1/test2"
2217
-	defer deleteImages(name)
2218 2217
 	_, err := buildImage(name,
2219 2218
 		`FROM busybox
2220 2219
 		ENV DIRPATH /test1
... ...
@@ -2236,7 +2159,6 @@ func (s *DockerSuite) TestBuildWorkdirWithEnvVariables(c *check.C) {
2236 2236
 
2237 2237
 func (s *DockerSuite) TestBuildRelativeCopy(c *check.C) {
2238 2238
 	name := "testbuildrelativecopy"
2239
-	defer deleteImages(name)
2240 2239
 	dockerfile := `
2241 2240
 		FROM busybox
2242 2241
 			WORKDIR /test1
... ...
@@ -2276,7 +2198,6 @@ func (s *DockerSuite) TestBuildRelativeCopy(c *check.C) {
2276 2276
 func (s *DockerSuite) TestBuildEnv(c *check.C) {
2277 2277
 	name := "testbuildenv"
2278 2278
 	expected := "[PATH=/test:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
2279
-	defer deleteImages(name)
2280 2279
 	_, err := buildImage(name,
2281 2280
 		`FROM busybox
2282 2281
 		ENV PATH /test:$PATH
... ...
@@ -2299,7 +2220,6 @@ func (s *DockerSuite) TestBuildContextCleanup(c *check.C) {
2299 2299
 	testRequires(c, SameHostDaemon)
2300 2300
 
2301 2301
 	name := "testbuildcontextcleanup"
2302
-	defer deleteImages(name)
2303 2302
 	entries, err := ioutil.ReadDir("/var/lib/docker/tmp")
2304 2303
 	if err != nil {
2305 2304
 		c.Fatalf("failed to list contents of tmp dir: %s", err)
... ...
@@ -2325,7 +2245,6 @@ func (s *DockerSuite) TestBuildContextCleanupFailedBuild(c *check.C) {
2325 2325
 	testRequires(c, SameHostDaemon)
2326 2326
 
2327 2327
 	name := "testbuildcontextcleanup"
2328
-	defer deleteImages(name)
2329 2328
 	entries, err := ioutil.ReadDir("/var/lib/docker/tmp")
2330 2329
 	if err != nil {
2331 2330
 		c.Fatalf("failed to list contents of tmp dir: %s", err)
... ...
@@ -2350,7 +2269,6 @@ func (s *DockerSuite) TestBuildContextCleanupFailedBuild(c *check.C) {
2350 2350
 func (s *DockerSuite) TestBuildCmd(c *check.C) {
2351 2351
 	name := "testbuildcmd"
2352 2352
 	expected := "{[/bin/echo Hello World]}"
2353
-	defer deleteImages(name)
2354 2353
 	_, err := buildImage(name,
2355 2354
 		`FROM scratch
2356 2355
         CMD ["/bin/echo", "Hello World"]`,
... ...
@@ -2370,7 +2288,6 @@ func (s *DockerSuite) TestBuildCmd(c *check.C) {
2370 2370
 func (s *DockerSuite) TestBuildExpose(c *check.C) {
2371 2371
 	name := "testbuildexpose"
2372 2372
 	expected := "map[2375/tcp:{}]"
2373
-	defer deleteImages(name)
2374 2373
 	_, err := buildImage(name,
2375 2374
 		`FROM scratch
2376 2375
         EXPOSE 2375`,
... ...
@@ -2413,7 +2330,6 @@ func (s *DockerSuite) TestBuildExposeMorePorts(c *check.C) {
2413 2413
 	tmpl.Execute(buf, portList)
2414 2414
 
2415 2415
 	name := "testbuildexpose"
2416
-	defer deleteImages(name)
2417 2416
 	_, err := buildImage(name, buf.String(), true)
2418 2417
 	if err != nil {
2419 2418
 		c.Fatal(err)
... ...
@@ -2458,7 +2374,6 @@ func (s *DockerSuite) TestBuildExposeOrder(c *check.C) {
2458 2458
 
2459 2459
 	id1 := buildID("testbuildexpose1", "80 2375")
2460 2460
 	id2 := buildID("testbuildexpose2", "2375 80")
2461
-	defer deleteImages("testbuildexpose1", "testbuildexpose2")
2462 2461
 	if id1 != id2 {
2463 2462
 		c.Errorf("EXPOSE should invalidate the cache only when ports actually changed")
2464 2463
 	}
... ...
@@ -2467,7 +2382,6 @@ func (s *DockerSuite) TestBuildExposeOrder(c *check.C) {
2467 2467
 func (s *DockerSuite) TestBuildExposeUpperCaseProto(c *check.C) {
2468 2468
 	name := "testbuildexposeuppercaseproto"
2469 2469
 	expected := "map[5678/udp:{}]"
2470
-	defer deleteImages(name)
2471 2470
 	_, err := buildImage(name,
2472 2471
 		`FROM scratch
2473 2472
         EXPOSE 5678/UDP`,
... ...
@@ -2488,7 +2402,6 @@ func (s *DockerSuite) TestBuildExposeHostPort(c *check.C) {
2488 2488
 	// start building docker file with ip:hostPort:containerPort
2489 2489
 	name := "testbuildexpose"
2490 2490
 	expected := "map[5678/tcp:{}]"
2491
-	defer deleteImages(name)
2492 2491
 	_, out, err := buildImageWithOut(name,
2493 2492
 		`FROM scratch
2494 2493
         EXPOSE 192.168.1.2:2375:5678`,
... ...
@@ -2513,7 +2426,6 @@ func (s *DockerSuite) TestBuildExposeHostPort(c *check.C) {
2513 2513
 func (s *DockerSuite) TestBuildEmptyEntrypointInheritance(c *check.C) {
2514 2514
 	name := "testbuildentrypointinheritance"
2515 2515
 	name2 := "testbuildentrypointinheritance2"
2516
-	defer deleteImages(name, name2)
2517 2516
 
2518 2517
 	_, err := buildImage(name,
2519 2518
 		`FROM busybox
... ...
@@ -2554,7 +2466,6 @@ func (s *DockerSuite) TestBuildEmptyEntrypointInheritance(c *check.C) {
2554 2554
 
2555 2555
 func (s *DockerSuite) TestBuildEmptyEntrypoint(c *check.C) {
2556 2556
 	name := "testbuildentrypoint"
2557
-	defer deleteImages(name)
2558 2557
 	expected := "{[]}"
2559 2558
 
2560 2559
 	_, err := buildImage(name,
... ...
@@ -2577,7 +2488,6 @@ func (s *DockerSuite) TestBuildEmptyEntrypoint(c *check.C) {
2577 2577
 func (s *DockerSuite) TestBuildEntrypoint(c *check.C) {
2578 2578
 	name := "testbuildentrypoint"
2579 2579
 	expected := "{[/bin/echo]}"
2580
-	defer deleteImages(name)
2581 2580
 	_, err := buildImage(name,
2582 2581
 		`FROM scratch
2583 2582
         ENTRYPOINT ["/bin/echo"]`,
... ...
@@ -2617,7 +2527,6 @@ func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2617 2617
 		if err != nil {
2618 2618
 			c.Fatalf("build failed to complete: %s, %v", out1, err)
2619 2619
 		}
2620
-		defer deleteImages(name1)
2621 2620
 	}
2622 2621
 	{
2623 2622
 		name2 := "testonbuildtrigger2"
... ...
@@ -2634,7 +2543,6 @@ func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2634 2634
 		if err != nil {
2635 2635
 			c.Fatalf("build failed to complete: %s, %v", out2, err)
2636 2636
 		}
2637
-		defer deleteImages(name2)
2638 2637
 	}
2639 2638
 	{
2640 2639
 		name3 := "testonbuildtrigger3"
... ...
@@ -2652,7 +2560,6 @@ func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2652 2652
 			c.Fatalf("build failed to complete: %s, %v", out3, err)
2653 2653
 		}
2654 2654
 
2655
-		defer deleteImages(name3)
2656 2655
 	}
2657 2656
 
2658 2657
 	// ONBUILD should be run in second build.
... ...
@@ -2669,7 +2576,6 @@ func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2669 2669
 
2670 2670
 func (s *DockerSuite) TestBuildWithCache(c *check.C) {
2671 2671
 	name := "testbuildwithcache"
2672
-	defer deleteImages(name)
2673 2672
 	id1, err := buildImage(name,
2674 2673
 		`FROM scratch
2675 2674
 		MAINTAINER dockerio
... ...
@@ -2696,7 +2602,6 @@ func (s *DockerSuite) TestBuildWithCache(c *check.C) {
2696 2696
 func (s *DockerSuite) TestBuildWithoutCache(c *check.C) {
2697 2697
 	name := "testbuildwithoutcache"
2698 2698
 	name2 := "testbuildwithoutcache2"
2699
-	defer deleteImages(name, name2)
2700 2699
 	id1, err := buildImage(name,
2701 2700
 		`FROM scratch
2702 2701
 		MAINTAINER dockerio
... ...
@@ -2723,8 +2628,6 @@ func (s *DockerSuite) TestBuildWithoutCache(c *check.C) {
2723 2723
 
2724 2724
 func (s *DockerSuite) TestBuildConditionalCache(c *check.C) {
2725 2725
 	name := "testbuildconditionalcache"
2726
-	name2 := "testbuildconditionalcache2"
2727
-	defer deleteImages(name, name2)
2728 2726
 
2729 2727
 	dockerfile := `
2730 2728
 		FROM busybox
... ...
@@ -2761,13 +2664,11 @@ func (s *DockerSuite) TestBuildConditionalCache(c *check.C) {
2761 2761
 	if id3 != id2 {
2762 2762
 		c.Fatal("Should have used the cache")
2763 2763
 	}
2764
-
2765 2764
 }
2766 2765
 
2767 2766
 func (s *DockerSuite) TestBuildADDLocalFileWithCache(c *check.C) {
2768 2767
 	name := "testbuildaddlocalfilewithcache"
2769 2768
 	name2 := "testbuildaddlocalfilewithcache2"
2770
-	defer deleteImages(name, name2)
2771 2769
 	dockerfile := `
2772 2770
 		FROM busybox
2773 2771
         MAINTAINER dockerio
... ...
@@ -2796,7 +2697,6 @@ func (s *DockerSuite) TestBuildADDLocalFileWithCache(c *check.C) {
2796 2796
 func (s *DockerSuite) TestBuildADDMultipleLocalFileWithCache(c *check.C) {
2797 2797
 	name := "testbuildaddmultiplelocalfilewithcache"
2798 2798
 	name2 := "testbuildaddmultiplelocalfilewithcache2"
2799
-	defer deleteImages(name, name2)
2800 2799
 	dockerfile := `
2801 2800
 		FROM busybox
2802 2801
         MAINTAINER dockerio
... ...
@@ -2825,7 +2725,6 @@ func (s *DockerSuite) TestBuildADDMultipleLocalFileWithCache(c *check.C) {
2825 2825
 func (s *DockerSuite) TestBuildADDLocalFileWithoutCache(c *check.C) {
2826 2826
 	name := "testbuildaddlocalfilewithoutcache"
2827 2827
 	name2 := "testbuildaddlocalfilewithoutcache2"
2828
-	defer deleteImages(name, name2)
2829 2828
 	dockerfile := `
2830 2829
 		FROM busybox
2831 2830
         MAINTAINER dockerio
... ...
@@ -2854,7 +2753,6 @@ func (s *DockerSuite) TestBuildADDLocalFileWithoutCache(c *check.C) {
2854 2854
 func (s *DockerSuite) TestBuildCopyDirButNotFile(c *check.C) {
2855 2855
 	name := "testbuildcopydirbutnotfile"
2856 2856
 	name2 := "testbuildcopydirbutnotfile2"
2857
-	defer deleteImages(name, name2)
2858 2857
 	dockerfile := `
2859 2858
         FROM scratch
2860 2859
         COPY dir /tmp/`
... ...
@@ -2888,7 +2786,6 @@ func (s *DockerSuite) TestBuildADDCurrentDirWithCache(c *check.C) {
2888 2888
 	name3 := name + "3"
2889 2889
 	name4 := name + "4"
2890 2890
 	name5 := name + "5"
2891
-	defer deleteImages(name, name2, name3, name4, name5)
2892 2891
 	dockerfile := `
2893 2892
         FROM scratch
2894 2893
         MAINTAINER dockerio
... ...
@@ -2950,7 +2847,6 @@ func (s *DockerSuite) TestBuildADDCurrentDirWithCache(c *check.C) {
2950 2950
 func (s *DockerSuite) TestBuildADDCurrentDirWithoutCache(c *check.C) {
2951 2951
 	name := "testbuildaddcurrentdirwithoutcache"
2952 2952
 	name2 := "testbuildaddcurrentdirwithoutcache2"
2953
-	defer deleteImages(name, name2)
2954 2953
 	dockerfile := `
2955 2954
         FROM scratch
2956 2955
         MAINTAINER dockerio
... ...
@@ -2977,7 +2873,6 @@ func (s *DockerSuite) TestBuildADDCurrentDirWithoutCache(c *check.C) {
2977 2977
 
2978 2978
 func (s *DockerSuite) TestBuildADDRemoteFileWithCache(c *check.C) {
2979 2979
 	name := "testbuildaddremotefilewithcache"
2980
-	defer deleteImages(name)
2981 2980
 	server, err := fakeStorage(map[string]string{
2982 2981
 		"baz": "hello",
2983 2982
 	})
... ...
@@ -3010,7 +2905,6 @@ func (s *DockerSuite) TestBuildADDRemoteFileWithCache(c *check.C) {
3010 3010
 func (s *DockerSuite) TestBuildADDRemoteFileWithoutCache(c *check.C) {
3011 3011
 	name := "testbuildaddremotefilewithoutcache"
3012 3012
 	name2 := "testbuildaddremotefilewithoutcache2"
3013
-	defer deleteImages(name, name2)
3014 3013
 	server, err := fakeStorage(map[string]string{
3015 3014
 		"baz": "hello",
3016 3015
 	})
... ...
@@ -3046,8 +2940,6 @@ func (s *DockerSuite) TestBuildADDRemoteFileMTime(c *check.C) {
3046 3046
 	name3 := name + "3"
3047 3047
 	name4 := name + "4"
3048 3048
 
3049
-	defer deleteImages(name, name2, name3, name4)
3050
-
3051 3049
 	files := map[string]string{"baz": "hello"}
3052 3050
 	server, err := fakeStorage(files)
3053 3051
 	if err != nil {
... ...
@@ -3115,7 +3007,6 @@ func (s *DockerSuite) TestBuildADDRemoteFileMTime(c *check.C) {
3115 3115
 
3116 3116
 func (s *DockerSuite) TestBuildADDLocalAndRemoteFilesWithCache(c *check.C) {
3117 3117
 	name := "testbuildaddlocalandremotefilewithcache"
3118
-	defer deleteImages(name)
3119 3118
 	server, err := fakeStorage(map[string]string{
3120 3119
 		"baz": "hello",
3121 3120
 	})
... ...
@@ -3167,7 +3058,6 @@ CMD ["cat", "/foo"]`,
3167 3167
 	}
3168 3168
 	name := "contexttar"
3169 3169
 	buildCmd := exec.Command(dockerBinary, "build", "-t", name, "-")
3170
-	defer deleteImages(name)
3171 3170
 	buildCmd.Stdin = context
3172 3171
 
3173 3172
 	if out, _, err := runCommandWithOutput(buildCmd); err != nil {
... ...
@@ -3194,15 +3084,12 @@ func (s *DockerSuite) TestBuildNoContext(c *check.C) {
3194 3194
 	if out, _ := dockerCmd(c, "run", "--rm", "nocontext"); out != "ok\n" {
3195 3195
 		c.Fatalf("run produced invalid output: %q, expected %q", out, "ok")
3196 3196
 	}
3197
-
3198
-	deleteImages("nocontext")
3199 3197
 }
3200 3198
 
3201 3199
 // TODO: TestCaching
3202 3200
 func (s *DockerSuite) TestBuildADDLocalAndRemoteFilesWithoutCache(c *check.C) {
3203 3201
 	name := "testbuildaddlocalandremotefilewithoutcache"
3204 3202
 	name2 := "testbuildaddlocalandremotefilewithoutcache2"
3205
-	defer deleteImages(name, name2)
3206 3203
 	server, err := fakeStorage(map[string]string{
3207 3204
 		"baz": "hello",
3208 3205
 	})
... ...
@@ -3237,7 +3124,6 @@ func (s *DockerSuite) TestBuildADDLocalAndRemoteFilesWithoutCache(c *check.C) {
3237 3237
 
3238 3238
 func (s *DockerSuite) TestBuildWithVolumeOwnership(c *check.C) {
3239 3239
 	name := "testbuildimg"
3240
-	defer deleteImages(name)
3241 3240
 
3242 3241
 	_, err := buildImage(name,
3243 3242
 		`FROM busybox:latest
... ...
@@ -3269,7 +3155,6 @@ func (s *DockerSuite) TestBuildWithVolumeOwnership(c *check.C) {
3269 3269
 // utilizing cache
3270 3270
 func (s *DockerSuite) TestBuildEntrypointRunCleanup(c *check.C) {
3271 3271
 	name := "testbuildcmdcleanup"
3272
-	defer deleteImages(name)
3273 3272
 	if _, err := buildImage(name,
3274 3273
 		`FROM busybox
3275 3274
         RUN echo "hello"`,
... ...
@@ -3303,7 +3188,6 @@ func (s *DockerSuite) TestBuildEntrypointRunCleanup(c *check.C) {
3303 3303
 
3304 3304
 func (s *DockerSuite) TestBuildForbiddenContextPath(c *check.C) {
3305 3305
 	name := "testbuildforbidpath"
3306
-	defer deleteImages(name)
3307 3306
 	ctx, err := fakeContext(`FROM scratch
3308 3307
         ADD ../../ test/
3309 3308
         `,
... ...
@@ -3325,7 +3209,6 @@ func (s *DockerSuite) TestBuildForbiddenContextPath(c *check.C) {
3325 3325
 
3326 3326
 func (s *DockerSuite) TestBuildADDFileNotFound(c *check.C) {
3327 3327
 	name := "testbuildaddnotfound"
3328
-	defer deleteImages(name)
3329 3328
 	ctx, err := fakeContext(`FROM scratch
3330 3329
         ADD foo /usr/local/bar`,
3331 3330
 		map[string]string{"bar": "hello"})
... ...
@@ -3344,7 +3227,6 @@ func (s *DockerSuite) TestBuildADDFileNotFound(c *check.C) {
3344 3344
 
3345 3345
 func (s *DockerSuite) TestBuildInheritance(c *check.C) {
3346 3346
 	name := "testbuildinheritance"
3347
-	defer deleteImages(name)
3348 3347
 
3349 3348
 	_, err := buildImage(name,
3350 3349
 		`FROM scratch
... ...
@@ -3384,7 +3266,6 @@ func (s *DockerSuite) TestBuildInheritance(c *check.C) {
3384 3384
 
3385 3385
 func (s *DockerSuite) TestBuildFails(c *check.C) {
3386 3386
 	name := "testbuildfails"
3387
-	defer deleteImages(name)
3388 3387
 	_, err := buildImage(name,
3389 3388
 		`FROM busybox
3390 3389
 		RUN sh -c "exit 23"`,
... ...
@@ -3400,7 +3281,6 @@ func (s *DockerSuite) TestBuildFails(c *check.C) {
3400 3400
 
3401 3401
 func (s *DockerSuite) TestBuildFailsDockerfileEmpty(c *check.C) {
3402 3402
 	name := "testbuildfails"
3403
-	defer deleteImages(name)
3404 3403
 	_, err := buildImage(name, ``, true)
3405 3404
 	if err != nil {
3406 3405
 		if !strings.Contains(err.Error(), "The Dockerfile (Dockerfile) cannot be empty") {
... ...
@@ -3413,7 +3293,6 @@ func (s *DockerSuite) TestBuildFailsDockerfileEmpty(c *check.C) {
3413 3413
 
3414 3414
 func (s *DockerSuite) TestBuildOnBuild(c *check.C) {
3415 3415
 	name := "testbuildonbuild"
3416
-	defer deleteImages(name)
3417 3416
 	_, err := buildImage(name,
3418 3417
 		`FROM busybox
3419 3418
 		ONBUILD RUN touch foobar`,
... ...
@@ -3432,7 +3311,6 @@ func (s *DockerSuite) TestBuildOnBuild(c *check.C) {
3432 3432
 
3433 3433
 func (s *DockerSuite) TestBuildOnBuildForbiddenChained(c *check.C) {
3434 3434
 	name := "testbuildonbuildforbiddenchained"
3435
-	defer deleteImages(name)
3436 3435
 	_, err := buildImage(name,
3437 3436
 		`FROM busybox
3438 3437
 		ONBUILD ONBUILD RUN touch foobar`,
... ...
@@ -3448,7 +3326,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenChained(c *check.C) {
3448 3448
 
3449 3449
 func (s *DockerSuite) TestBuildOnBuildForbiddenFrom(c *check.C) {
3450 3450
 	name := "testbuildonbuildforbiddenfrom"
3451
-	defer deleteImages(name)
3452 3451
 	_, err := buildImage(name,
3453 3452
 		`FROM busybox
3454 3453
 		ONBUILD FROM scratch`,
... ...
@@ -3464,7 +3341,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenFrom(c *check.C) {
3464 3464
 
3465 3465
 func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainer(c *check.C) {
3466 3466
 	name := "testbuildonbuildforbiddenmaintainer"
3467
-	defer deleteImages(name)
3468 3467
 	_, err := buildImage(name,
3469 3468
 		`FROM busybox
3470 3469
 		ONBUILD MAINTAINER docker.io`,
... ...
@@ -3481,7 +3357,6 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainer(c *check.C) {
3481 3481
 // gh #2446
3482 3482
 func (s *DockerSuite) TestBuildAddToSymlinkDest(c *check.C) {
3483 3483
 	name := "testbuildaddtosymlinkdest"
3484
-	defer deleteImages(name)
3485 3484
 	ctx, err := fakeContext(`FROM busybox
3486 3485
         RUN mkdir /foo
3487 3486
         RUN ln -s /foo /bar
... ...
@@ -3502,7 +3377,6 @@ func (s *DockerSuite) TestBuildAddToSymlinkDest(c *check.C) {
3502 3502
 
3503 3503
 func (s *DockerSuite) TestBuildEscapeWhitespace(c *check.C) {
3504 3504
 	name := "testbuildescaping"
3505
-	defer deleteImages(name)
3506 3505
 
3507 3506
 	_, err := buildImage(name, `
3508 3507
   FROM busybox
... ...
@@ -3526,7 +3400,6 @@ docker.com>"
3526 3526
 func (s *DockerSuite) TestBuildVerifyIntString(c *check.C) {
3527 3527
 	// Verify that strings that look like ints are still passed as strings
3528 3528
 	name := "testbuildstringing"
3529
-	defer deleteImages(name)
3530 3529
 
3531 3530
 	_, err := buildImage(name, `
3532 3531
   FROM busybox
... ...
@@ -3546,7 +3419,6 @@ func (s *DockerSuite) TestBuildVerifyIntString(c *check.C) {
3546 3546
 
3547 3547
 func (s *DockerSuite) TestBuildDockerignore(c *check.C) {
3548 3548
 	name := "testbuilddockerignore"
3549
-	defer deleteImages(name)
3550 3549
 	dockerfile := `
3551 3550
         FROM busybox
3552 3551
         ADD . /bla
... ...
@@ -3576,7 +3448,6 @@ func (s *DockerSuite) TestBuildDockerignore(c *check.C) {
3576 3576
 
3577 3577
 func (s *DockerSuite) TestBuildDockerignoreCleanPaths(c *check.C) {
3578 3578
 	name := "testbuilddockerignorecleanpaths"
3579
-	defer deleteImages(name)
3580 3579
 	dockerfile := `
3581 3580
         FROM busybox
3582 3581
         ADD . /tmp/
... ...
@@ -3598,7 +3469,6 @@ func (s *DockerSuite) TestBuildDockerignoreCleanPaths(c *check.C) {
3598 3598
 
3599 3599
 func (s *DockerSuite) TestBuildDockerignoringDockerfile(c *check.C) {
3600 3600
 	name := "testbuilddockerignoredockerfile"
3601
-	defer deleteImages(name)
3602 3601
 	dockerfile := `
3603 3602
         FROM busybox
3604 3603
 		ADD . /tmp/
... ...
@@ -3627,7 +3497,6 @@ func (s *DockerSuite) TestBuildDockerignoringDockerfile(c *check.C) {
3627 3627
 
3628 3628
 func (s *DockerSuite) TestBuildDockerignoringRenamedDockerfile(c *check.C) {
3629 3629
 	name := "testbuilddockerignoredockerfile"
3630
-	defer deleteImages(name)
3631 3630
 	dockerfile := `
3632 3631
         FROM busybox
3633 3632
 		ADD . /tmp/
... ...
@@ -3658,7 +3527,6 @@ func (s *DockerSuite) TestBuildDockerignoringRenamedDockerfile(c *check.C) {
3658 3658
 
3659 3659
 func (s *DockerSuite) TestBuildDockerignoringDockerignore(c *check.C) {
3660 3660
 	name := "testbuilddockerignoredockerignore"
3661
-	defer deleteImages(name)
3662 3661
 	dockerfile := `
3663 3662
         FROM busybox
3664 3663
 		ADD . /tmp/
... ...
@@ -3682,7 +3550,6 @@ func (s *DockerSuite) TestBuildDockerignoreTouchDockerfile(c *check.C) {
3682 3682
 	var id2 string
3683 3683
 
3684 3684
 	name := "testbuilddockerignoretouchdockerfile"
3685
-	defer deleteImages(name)
3686 3685
 	dockerfile := `
3687 3686
         FROM busybox
3688 3687
 		ADD . /tmp/`
... ...
@@ -3732,7 +3599,6 @@ func (s *DockerSuite) TestBuildDockerignoreTouchDockerfile(c *check.C) {
3732 3732
 
3733 3733
 func (s *DockerSuite) TestBuildDockerignoringWholeDir(c *check.C) {
3734 3734
 	name := "testbuilddockerignorewholedir"
3735
-	defer deleteImages(name)
3736 3735
 	dockerfile := `
3737 3736
         FROM busybox
3738 3737
 		COPY . /
... ...
@@ -3754,7 +3620,6 @@ func (s *DockerSuite) TestBuildDockerignoringWholeDir(c *check.C) {
3754 3754
 
3755 3755
 func (s *DockerSuite) TestBuildLineBreak(c *check.C) {
3756 3756
 	name := "testbuildlinebreak"
3757
-	defer deleteImages(name)
3758 3757
 	_, err := buildImage(name,
3759 3758
 		`FROM  busybox
3760 3759
 RUN    sh -c 'echo root:testpass \
... ...
@@ -3770,7 +3635,6 @@ RUN    [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ]`,
3770 3770
 
3771 3771
 func (s *DockerSuite) TestBuildEOLInLine(c *check.C) {
3772 3772
 	name := "testbuildeolinline"
3773
-	defer deleteImages(name)
3774 3773
 	_, err := buildImage(name,
3775 3774
 		`FROM   busybox
3776 3775
 RUN    sh -c 'echo root:testpass > /tmp/passwd'
... ...
@@ -3786,7 +3650,6 @@ RUN    [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ]`,
3786 3786
 
3787 3787
 func (s *DockerSuite) TestBuildCommentsShebangs(c *check.C) {
3788 3788
 	name := "testbuildcomments"
3789
-	defer deleteImages(name)
3790 3789
 	_, err := buildImage(name,
3791 3790
 		`FROM busybox
3792 3791
 # This is an ordinary comment.
... ...
@@ -3805,7 +3668,6 @@ RUN [ "$(/hello.sh)" = "hello world" ]`,
3805 3805
 
3806 3806
 func (s *DockerSuite) TestBuildUsersAndGroups(c *check.C) {
3807 3807
 	name := "testbuildusers"
3808
-	defer deleteImages(name)
3809 3808
 	_, err := buildImage(name,
3810 3809
 		`FROM busybox
3811 3810
 
... ...
@@ -3868,7 +3730,6 @@ RUN [ "$(id -u):$(id -g)/$(id -un):$(id -gn)/$(id -G):$(id -Gn)" = '1042:1043/10
3868 3868
 
3869 3869
 func (s *DockerSuite) TestBuildEnvUsage(c *check.C) {
3870 3870
 	name := "testbuildenvusage"
3871
-	defer deleteImages(name)
3872 3871
 	dockerfile := `FROM busybox
3873 3872
 ENV    HOME /root
3874 3873
 ENV    PATH $HOME/bin:$PATH
... ...
@@ -3904,7 +3765,6 @@ RUN    [ "$ghi" = "def" ]
3904 3904
 
3905 3905
 func (s *DockerSuite) TestBuildEnvUsage2(c *check.C) {
3906 3906
 	name := "testbuildenvusage2"
3907
-	defer deleteImages(name)
3908 3907
 	dockerfile := `FROM busybox
3909 3908
 ENV    abc=def
3910 3909
 RUN    [ "$abc" = "def" ]
... ...
@@ -4007,7 +3867,6 @@ RUN    [ "$eee1,$eee2,$eee3,$eee4" = 'foo,foo,foo,foo' ]
4007 4007
 
4008 4008
 func (s *DockerSuite) TestBuildAddScript(c *check.C) {
4009 4009
 	name := "testbuildaddscript"
4010
-	defer deleteImages(name)
4011 4010
 	dockerfile := `
4012 4011
 FROM busybox
4013 4012
 ADD test /test
... ...
@@ -4030,7 +3889,6 @@ RUN [ "$(cat /testfile)" = 'test!' ]`
4030 4030
 
4031 4031
 func (s *DockerSuite) TestBuildAddTar(c *check.C) {
4032 4032
 	name := "testbuildaddtar"
4033
-	defer deleteImages(name)
4034 4033
 
4035 4034
 	ctx := func() *FakeContext {
4036 4035
 		dockerfile := `
... ...
@@ -4085,7 +3943,6 @@ RUN cat /existing-directory-trailing-slash/test/foo | grep Hi`
4085 4085
 
4086 4086
 func (s *DockerSuite) TestBuildAddTarXz(c *check.C) {
4087 4087
 	name := "testbuildaddtarxz"
4088
-	defer deleteImages(name)
4089 4088
 
4090 4089
 	ctx := func() *FakeContext {
4091 4090
 		dockerfile := `
... ...
@@ -4136,7 +3993,6 @@ func (s *DockerSuite) TestBuildAddTarXz(c *check.C) {
4136 4136
 
4137 4137
 func (s *DockerSuite) TestBuildAddTarXzGz(c *check.C) {
4138 4138
 	name := "testbuildaddtarxzgz"
4139
-	defer deleteImages(name)
4140 4139
 
4141 4140
 	ctx := func() *FakeContext {
4142 4141
 		dockerfile := `
... ...
@@ -4195,7 +4051,6 @@ func (s *DockerSuite) TestBuildAddTarXzGz(c *check.C) {
4195 4195
 
4196 4196
 func (s *DockerSuite) TestBuildFromGIT(c *check.C) {
4197 4197
 	name := "testbuildfromgit"
4198
-	defer deleteImages(name)
4199 4198
 	git, err := fakeGIT("repo", map[string]string{
4200 4199
 		"Dockerfile": `FROM busybox
4201 4200
 					ADD first /first
... ...
@@ -4223,7 +4078,6 @@ func (s *DockerSuite) TestBuildFromGIT(c *check.C) {
4223 4223
 
4224 4224
 func (s *DockerSuite) TestBuildCleanupCmdOnEntrypoint(c *check.C) {
4225 4225
 	name := "testbuildcmdcleanuponentrypoint"
4226
-	defer deleteImages(name)
4227 4226
 	if _, err := buildImage(name,
4228 4227
 		`FROM scratch
4229 4228
         CMD ["test"]
... ...
@@ -4256,7 +4110,6 @@ func (s *DockerSuite) TestBuildCleanupCmdOnEntrypoint(c *check.C) {
4256 4256
 
4257 4257
 func (s *DockerSuite) TestBuildClearCmd(c *check.C) {
4258 4258
 	name := "testbuildclearcmd"
4259
-	defer deleteImages(name)
4260 4259
 	_, err := buildImage(name,
4261 4260
 		`From scratch
4262 4261
    ENTRYPOINT ["/bin/bash"]
... ...
@@ -4276,7 +4129,6 @@ func (s *DockerSuite) TestBuildClearCmd(c *check.C) {
4276 4276
 
4277 4277
 func (s *DockerSuite) TestBuildEmptyCmd(c *check.C) {
4278 4278
 	name := "testbuildemptycmd"
4279
-	defer deleteImages(name)
4280 4279
 	if _, err := buildImage(name, "FROM scratch\nMAINTAINER quux\n", true); err != nil {
4281 4280
 		c.Fatal(err)
4282 4281
 	}
... ...
@@ -4291,14 +4143,10 @@ func (s *DockerSuite) TestBuildEmptyCmd(c *check.C) {
4291 4291
 
4292 4292
 func (s *DockerSuite) TestBuildOnBuildOutput(c *check.C) {
4293 4293
 	name := "testbuildonbuildparent"
4294
-	defer deleteImages(name)
4295 4294
 	if _, err := buildImage(name, "FROM busybox\nONBUILD RUN echo foo\n", true); err != nil {
4296 4295
 		c.Fatal(err)
4297 4296
 	}
4298 4297
 
4299
-	childname := "testbuildonbuildchild"
4300
-	defer deleteImages(childname)
4301
-
4302 4298
 	_, out, err := buildImageWithOut(name, "FROM "+name+"\nMAINTAINER quux\n", true)
4303 4299
 	if err != nil {
4304 4300
 		c.Fatal(err)
... ...
@@ -4312,7 +4160,6 @@ func (s *DockerSuite) TestBuildOnBuildOutput(c *check.C) {
4312 4312
 
4313 4313
 func (s *DockerSuite) TestBuildInvalidTag(c *check.C) {
4314 4314
 	name := "abcd:" + stringutils.GenerateRandomAlphaOnlyString(200)
4315
-	defer deleteImages(name)
4316 4315
 	_, out, err := buildImageWithOut(name, "FROM scratch\nMAINTAINER quux\n", true)
4317 4316
 	// if the error doesnt check for illegal tag name, or the image is built
4318 4317
 	// then this should fail
... ...
@@ -4323,7 +4170,6 @@ func (s *DockerSuite) TestBuildInvalidTag(c *check.C) {
4323 4323
 
4324 4324
 func (s *DockerSuite) TestBuildCmdShDashC(c *check.C) {
4325 4325
 	name := "testbuildcmdshc"
4326
-	defer deleteImages(name)
4327 4326
 	if _, err := buildImage(name, "FROM busybox\nCMD echo cmd\n", true); err != nil {
4328 4327
 		c.Fatal(err)
4329 4328
 	}
... ...
@@ -4346,7 +4192,6 @@ func (s *DockerSuite) TestBuildCmdSpaces(c *check.C) {
4346 4346
 	// the arg separator to make sure ["echo","hi"] and ["echo hi"] don't
4347 4347
 	// look the same
4348 4348
 	name := "testbuildcmdspaces"
4349
-	defer deleteImages(name)
4350 4349
 	var id1 string
4351 4350
 	var id2 string
4352 4351
 	var err error
... ...
@@ -4380,7 +4225,6 @@ func (s *DockerSuite) TestBuildCmdSpaces(c *check.C) {
4380 4380
 
4381 4381
 func (s *DockerSuite) TestBuildCmdJSONNoShDashC(c *check.C) {
4382 4382
 	name := "testbuildcmdjson"
4383
-	defer deleteImages(name)
4384 4383
 	if _, err := buildImage(name, "FROM busybox\nCMD [\"echo\", \"cmd\"]", true); err != nil {
4385 4384
 		c.Fatal(err)
4386 4385
 	}
... ...
@@ -4400,7 +4244,6 @@ func (s *DockerSuite) TestBuildCmdJSONNoShDashC(c *check.C) {
4400 4400
 
4401 4401
 func (s *DockerSuite) TestBuildErrorInvalidInstruction(c *check.C) {
4402 4402
 	name := "testbuildignoreinvalidinstruction"
4403
-	defer deleteImages(name)
4404 4403
 
4405 4404
 	out, _, err := buildImageWithOut(name, "FROM busybox\nfoo bar", true)
4406 4405
 	if err == nil {
... ...
@@ -4410,7 +4253,6 @@ func (s *DockerSuite) TestBuildErrorInvalidInstruction(c *check.C) {
4410 4410
 }
4411 4411
 
4412 4412
 func (s *DockerSuite) TestBuildEntrypointInheritance(c *check.C) {
4413
-	defer deleteImages("parent", "child")
4414 4413
 
4415 4414
 	if _, err := buildImage("parent", `
4416 4415
     FROM busybox
... ...
@@ -4447,8 +4289,6 @@ func (s *DockerSuite) TestBuildEntrypointInheritanceInspect(c *check.C) {
4447 4447
 		expected = `["/bin/sh","-c","echo quux"]`
4448 4448
 	)
4449 4449
 
4450
-	defer deleteImages(name, name2)
4451
-
4452 4450
 	if _, err := buildImage(name, "FROM busybox\nENTRYPOINT /foo/bar", true); err != nil {
4453 4451
 		c.Fatal(err)
4454 4452
 	}
... ...
@@ -4481,7 +4321,6 @@ func (s *DockerSuite) TestBuildEntrypointInheritanceInspect(c *check.C) {
4481 4481
 
4482 4482
 func (s *DockerSuite) TestBuildRunShEntrypoint(c *check.C) {
4483 4483
 	name := "testbuildentrypoint"
4484
-	defer deleteImages(name)
4485 4484
 	_, err := buildImage(name,
4486 4485
 		`FROM busybox
4487 4486
                                 ENTRYPOINT /bin/echo`,
... ...
@@ -4500,7 +4339,6 @@ func (s *DockerSuite) TestBuildRunShEntrypoint(c *check.C) {
4500 4500
 
4501 4501
 func (s *DockerSuite) TestBuildExoticShellInterpolation(c *check.C) {
4502 4502
 	name := "testbuildexoticshellinterpolation"
4503
-	defer deleteImages(name)
4504 4503
 
4505 4504
 	_, err := buildImage(name, `
4506 4505
 		FROM busybox
... ...
@@ -4534,7 +4372,6 @@ func (s *DockerSuite) TestBuildVerifySingleQuoteFails(c *check.C) {
4534 4534
 	// as a "string" insead of "JSON array" and pass it on to "sh -c" and
4535 4535
 	// it should barf on it.
4536 4536
 	name := "testbuildsinglequotefails"
4537
-	defer deleteImages(name)
4538 4537
 
4539 4538
 	_, err := buildImage(name,
4540 4539
 		`FROM busybox
... ...
@@ -4550,7 +4387,6 @@ func (s *DockerSuite) TestBuildVerifySingleQuoteFails(c *check.C) {
4550 4550
 
4551 4551
 func (s *DockerSuite) TestBuildVerboseOut(c *check.C) {
4552 4552
 	name := "testbuildverboseout"
4553
-	defer deleteImages(name)
4554 4553
 
4555 4554
 	_, out, err := buildImageWithOut(name,
4556 4555
 		`FROM busybox
... ...
@@ -4568,7 +4404,6 @@ RUN echo 123`,
4568 4568
 
4569 4569
 func (s *DockerSuite) TestBuildWithTabs(c *check.C) {
4570 4570
 	name := "testbuildwithtabs"
4571
-	defer deleteImages(name)
4572 4571
 	_, err := buildImage(name,
4573 4572
 		"FROM busybox\nRUN echo\tone\t\ttwo", true)
4574 4573
 	if err != nil {
... ...
@@ -4588,7 +4423,6 @@ func (s *DockerSuite) TestBuildWithTabs(c *check.C) {
4588 4588
 func (s *DockerSuite) TestBuildLabels(c *check.C) {
4589 4589
 	name := "testbuildlabel"
4590 4590
 	expected := `{"License":"GPL","Vendor":"Acme"}`
4591
-	defer deleteImages(name)
4592 4591
 	_, err := buildImage(name,
4593 4592
 		`FROM busybox
4594 4593
 		LABEL Vendor=Acme
... ...
@@ -4608,7 +4442,6 @@ func (s *DockerSuite) TestBuildLabels(c *check.C) {
4608 4608
 
4609 4609
 func (s *DockerSuite) TestBuildLabelsCache(c *check.C) {
4610 4610
 	name := "testbuildlabelcache"
4611
-	defer deleteImages(name)
4612 4611
 
4613 4612
 	id1, err := buildImage(name,
4614 4613
 		`FROM busybox
... ...
@@ -4659,7 +4492,6 @@ func (s *DockerSuite) TestBuildStderr(c *check.C) {
4659 4659
 	// This test just makes sure that no non-error output goes
4660 4660
 	// to stderr
4661 4661
 	name := "testbuildstderr"
4662
-	defer deleteImages(name)
4663 4662
 	_, _, stderr, err := buildImageWithStdoutStderr(name,
4664 4663
 		"FROM busybox\nRUN echo one", true)
4665 4664
 	if err != nil {
... ...
@@ -4685,7 +4517,6 @@ func (s *DockerSuite) TestBuildChownSingleFile(c *check.C) {
4685 4685
 	testRequires(c, UnixCli) // test uses chown: not available on windows
4686 4686
 
4687 4687
 	name := "testbuildchownsinglefile"
4688
-	defer deleteImages(name)
4689 4688
 
4690 4689
 	ctx, err := fakeContext(`
4691 4690
 FROM busybox
... ...
@@ -4765,7 +4596,6 @@ func (s *DockerSuite) TestBuildSymlinkBreakout(c *check.C) {
4765 4765
 
4766 4766
 func (s *DockerSuite) TestBuildXZHost(c *check.C) {
4767 4767
 	name := "testbuildxzhost"
4768
-	defer deleteImages(name)
4769 4768
 
4770 4769
 	ctx, err := fakeContext(`
4771 4770
 FROM busybox
... ...
@@ -4796,7 +4626,6 @@ func (s *DockerSuite) TestBuildVolumesRetainContents(c *check.C) {
4796 4796
 		name     = "testbuildvolumescontent"
4797 4797
 		expected = "some text"
4798 4798
 	)
4799
-	defer deleteImages(name)
4800 4799
 	ctx, err := fakeContext(`
4801 4800
 FROM busybox
4802 4801
 COPY content /foo/file
... ...
@@ -4929,7 +4758,6 @@ func (s *DockerSuite) TestBuildRenamedDockerfile(c *check.C) {
4929 4929
 
4930 4930
 func (s *DockerSuite) TestBuildFromMixedcaseDockerfile(c *check.C) {
4931 4931
 	testRequires(c, UnixCli) // Dockerfile overwrites dockerfile on windows
4932
-	defer deleteImages("test1")
4933 4932
 
4934 4933
 	ctx, err := fakeContext(`FROM busybox
4935 4934
 	RUN echo from dockerfile`,
... ...
@@ -4954,7 +4782,6 @@ func (s *DockerSuite) TestBuildFromMixedcaseDockerfile(c *check.C) {
4954 4954
 
4955 4955
 func (s *DockerSuite) TestBuildWithTwoDockerfiles(c *check.C) {
4956 4956
 	testRequires(c, UnixCli) // Dockerfile overwrites dockerfile on windows
4957
-	defer deleteImages("test1")
4958 4957
 
4959 4958
 	ctx, err := fakeContext(`FROM busybox
4960 4959
 RUN echo from Dockerfile`,
... ...
@@ -4978,7 +4805,6 @@ RUN echo from Dockerfile`,
4978 4978
 }
4979 4979
 
4980 4980
 func (s *DockerSuite) TestBuildFromURLWithF(c *check.C) {
4981
-	defer deleteImages("test1")
4982 4981
 
4983 4982
 	server, err := fakeStorage(map[string]string{"baz": `FROM busybox
4984 4983
 RUN echo from baz
... ...
@@ -5013,7 +4839,6 @@ RUN echo from Dockerfile`,
5013 5013
 }
5014 5014
 
5015 5015
 func (s *DockerSuite) TestBuildFromStdinWithF(c *check.C) {
5016
-	defer deleteImages("test1")
5017 5016
 
5018 5017
 	ctx, err := fakeContext(`FROM busybox
5019 5018
 RUN echo from Dockerfile`,
... ...
@@ -5121,8 +4946,6 @@ func (s *DockerSuite) TestBuildDockerfileOutsideContext(c *check.C) {
5121 5121
 	if err == nil {
5122 5122
 		c.Fatalf("Expected error. Out: %s", out)
5123 5123
 	}
5124
-	deleteImages(name)
5125
-
5126 5124
 }
5127 5125
 
5128 5126
 func (s *DockerSuite) TestBuildSpaces(c *check.C) {
... ...
@@ -5134,7 +4957,6 @@ func (s *DockerSuite) TestBuildSpaces(c *check.C) {
5134 5134
 	)
5135 5135
 
5136 5136
 	name := "testspaces"
5137
-	defer deleteImages(name)
5138 5137
 	ctx, err := fakeContext("FROM busybox\nCOPY\n",
5139 5138
 		map[string]string{
5140 5139
 			"Dockerfile": "FROM busybox\nCOPY\n",
... ...
@@ -5199,7 +5021,6 @@ func (s *DockerSuite) TestBuildSpaces(c *check.C) {
5199 5199
 func (s *DockerSuite) TestBuildSpacesWithQuotes(c *check.C) {
5200 5200
 	// Test to make sure that spaces in quotes aren't lost
5201 5201
 	name := "testspacesquotes"
5202
-	defer deleteImages(name)
5203 5202
 
5204 5203
 	dockerfile := `FROM busybox
5205 5204
 RUN echo "  \
... ...
@@ -5275,7 +5096,6 @@ func (s *DockerSuite) TestBuildMissingArgs(c *check.C) {
5275 5275
 }
5276 5276
 
5277 5277
 func (s *DockerSuite) TestBuildEmptyScratch(c *check.C) {
5278
-	defer deleteImages("sc")
5279 5278
 	_, out, err := buildImageWithOut("sc", "FROM scratch", true)
5280 5279
 	if err == nil {
5281 5280
 		c.Fatalf("Build was supposed to fail")
... ...
@@ -5286,7 +5106,6 @@ func (s *DockerSuite) TestBuildEmptyScratch(c *check.C) {
5286 5286
 }
5287 5287
 
5288 5288
 func (s *DockerSuite) TestBuildDotDotFile(c *check.C) {
5289
-	defer deleteImages("sc")
5290 5289
 	ctx, err := fakeContext("FROM busybox\n",
5291 5290
 		map[string]string{
5292 5291
 			"..gitme": "",
... ...
@@ -5302,7 +5121,6 @@ func (s *DockerSuite) TestBuildDotDotFile(c *check.C) {
5302 5302
 }
5303 5303
 
5304 5304
 func (s *DockerSuite) TestBuildNotVerbose(c *check.C) {
5305
-	defer deleteImages("verbose")
5306 5305
 
5307 5306
 	ctx, err := fakeContext("FROM busybox\nENV abc=hi\nRUN echo $abc there", map[string]string{})
5308 5307
 	if err != nil {
... ...
@@ -5337,8 +5155,6 @@ func (s *DockerSuite) TestBuildNotVerbose(c *check.C) {
5337 5337
 func (s *DockerSuite) TestBuildRUNoneJSON(c *check.C) {
5338 5338
 	name := "testbuildrunonejson"
5339 5339
 
5340
-	defer deleteImages(name, "hello-world")
5341
-
5342 5340
 	ctx, err := fakeContext(`FROM hello-world:frozen
5343 5341
 RUN [ "/hello" ]`, map[string]string{})
5344 5342
 	if err != nil {
... ...
@@ -5361,7 +5177,6 @@ RUN [ "/hello" ]`, map[string]string{})
5361 5361
 
5362 5362
 func (s *DockerSuite) TestBuildResourceConstraintsAreUsed(c *check.C) {
5363 5363
 	name := "testbuildresourceconstraints"
5364
-	defer deleteImages(name, "hello-world")
5365 5364
 
5366 5365
 	ctx, err := fakeContext(`
5367 5366
 	FROM hello-world:frozen
... ...
@@ -5425,7 +5240,6 @@ func (s *DockerSuite) TestBuildResourceConstraintsAreUsed(c *check.C) {
5425 5425
 
5426 5426
 func (s *DockerSuite) TestBuildEmptyStringVolume(c *check.C) {
5427 5427
 	name := "testbuildemptystringvolume"
5428
-	defer deleteImages(name)
5429 5428
 
5430 5429
 	_, err := buildImage(name, `
5431 5430
   FROM busybox
... ...
@@ -33,7 +33,6 @@ func setupImageWithTag(tag string) (string, error) {
33 33
 	if out, _, err := runCommandWithOutput(cmd); err != nil {
34 34
 		return "", fmt.Errorf("image tagging failed: %s, %v", out, err)
35 35
 	}
36
-	defer deleteImages(repoAndTag)
37 36
 
38 37
 	// delete the container as we don't need it any more
39 38
 	if err := deleteContainer(containerName); err != nil {
... ...
@@ -77,7 +76,6 @@ func (s *DockerSuite) TestPullByTagDisplaysDigest(c *check.C) {
77 77
 	if err != nil {
78 78
 		c.Fatalf("error pulling by tag: %s, %v", out, err)
79 79
 	}
80
-	defer deleteImages(repoName)
81 80
 
82 81
 	// the pull output includes "Digest: <digest>", so find that
83 82
 	matches := digestRegex.FindStringSubmatch(out)
... ...
@@ -108,7 +106,6 @@ func (s *DockerSuite) TestPullByDigest(c *check.C) {
108 108
 	if err != nil {
109 109
 		c.Fatalf("error pulling by digest: %s, %v", out, err)
110 110
 	}
111
-	defer deleteImages(imageReference)
112 111
 
113 112
 	// the pull output includes "Digest: <digest>", so find that
114 113
 	matches := digestRegex.FindStringSubmatch(out)
... ...
@@ -248,7 +245,6 @@ func (s *DockerSuite) TestBuildByDigest(c *check.C) {
248 248
 
249 249
 	// do the build
250 250
 	name := "buildbydigest"
251
-	defer deleteImages(name)
252 251
 	_, err = buildImage(name, fmt.Sprintf(
253 252
 		`FROM %s
254 253
      CMD ["/bin/echo", "Hello World"]`, imageReference),
... ...
@@ -340,7 +336,6 @@ func (s *DockerSuite) TestListImagesWithoutDigests(c *check.C) {
340 340
 
341 341
 func (s *DockerSuite) TestListImagesWithDigests(c *check.C) {
342 342
 	defer setupRegistry(c)()
343
-	defer deleteImages(repoName+":tag1", repoName+":tag2")
344 343
 
345 344
 	// setup image1
346 345
 	digest1, err := setupImageWithTag("tag1")
... ...
@@ -348,7 +343,6 @@ func (s *DockerSuite) TestListImagesWithDigests(c *check.C) {
348 348
 		c.Fatalf("error setting up image: %v", err)
349 349
 	}
350 350
 	imageReference1 := fmt.Sprintf("%s@%s", repoName, digest1)
351
-	defer deleteImages(imageReference1)
352 351
 	c.Logf("imageReference1 = %s", imageReference1)
353 352
 
354 353
 	// pull image1 by digest
... ...
@@ -377,7 +371,6 @@ func (s *DockerSuite) TestListImagesWithDigests(c *check.C) {
377 377
 		c.Fatalf("error setting up image: %v", err)
378 378
 	}
379 379
 	imageReference2 := fmt.Sprintf("%s@%s", repoName, digest2)
380
-	defer deleteImages(imageReference2)
381 380
 	c.Logf("imageReference2 = %s", imageReference2)
382 381
 
383 382
 	// pull image1 by digest
... ...
@@ -508,7 +501,6 @@ func (s *DockerSuite) TestDeleteImageByIDOnlyPulledByDigest(c *check.C) {
508 508
 		c.Fatalf("error pulling by digest: %s, %v", out, err)
509 509
 	}
510 510
 	// just in case...
511
-	defer deleteImages(imageReference)
512 511
 
513 512
 	imageID, err := inspectField(imageReference, ".Id")
514 513
 	if err != nil {
... ...
@@ -33,10 +33,6 @@ func (s *DockerSuite) TestCommitAfterContainerIsDone(c *check.C) {
33 33
 	if out, _, err = runCommandWithOutput(inspectCmd); err != nil {
34 34
 		c.Fatalf("failed to inspect image: %s, %v", out, err)
35 35
 	}
36
-
37
-	deleteContainer(cleanedContainerID)
38
-	deleteImages(cleanedImageID)
39
-
40 36
 }
41 37
 
42 38
 func (s *DockerSuite) TestCommitWithoutPause(c *check.C) {
... ...
@@ -65,10 +61,6 @@ func (s *DockerSuite) TestCommitWithoutPause(c *check.C) {
65 65
 	if out, _, err = runCommandWithOutput(inspectCmd); err != nil {
66 66
 		c.Fatalf("failed to inspect image: %s, %v", out, err)
67 67
 	}
68
-
69
-	deleteContainer(cleanedContainerID)
70
-	deleteImages(cleanedImageID)
71
-
72 68
 }
73 69
 
74 70
 //test commit a paused container should not unpause it after commit
... ...
@@ -92,8 +84,6 @@ func (s *DockerSuite) TestCommitPausedContainer(c *check.C) {
92 92
 	if err != nil {
93 93
 		c.Fatalf("failed to commit container to image: %s, %v", out, err)
94 94
 	}
95
-	cleanedImageID := strings.TrimSpace(out)
96
-	defer deleteImages(cleanedImageID)
97 95
 
98 96
 	cmd = exec.Command(dockerBinary, "inspect", "-f", "{{.State.Paused}}", cleanedContainerID)
99 97
 	out, _, _, err = runCommandWithStdoutStderr(cmd)
... ...
@@ -120,7 +110,6 @@ func (s *DockerSuite) TestCommitNewFile(c *check.C) {
120 120
 		c.Fatal(err)
121 121
 	}
122 122
 	imageID = strings.Trim(imageID, "\r\n")
123
-	defer deleteImages(imageID)
124 123
 
125 124
 	cmd = exec.Command(dockerBinary, "run", imageID, "cat", "/foo")
126 125
 
... ...
@@ -161,7 +150,6 @@ func (s *DockerSuite) TestCommitHardlink(c *check.C) {
161 161
 		c.Fatal(imageID, err)
162 162
 	}
163 163
 	imageID = strings.Trim(imageID, "\r\n")
164
-	defer deleteImages(imageID)
165 164
 
166 165
 	cmd = exec.Command(dockerBinary, "run", "-t", "hardlinks", "ls", "-di", "file1", "file2")
167 166
 	secondOuput, _, err := runCommandWithOutput(cmd)
... ...
@@ -185,7 +173,6 @@ func (s *DockerSuite) TestCommitHardlink(c *check.C) {
185 185
 }
186 186
 
187 187
 func (s *DockerSuite) TestCommitTTY(c *check.C) {
188
-	defer deleteImages("ttytest")
189 188
 
190 189
 	cmd := exec.Command(dockerBinary, "run", "-t", "--name", "tty", "busybox", "/bin/ls")
191 190
 	if _, err := runCommand(cmd); err != nil {
... ...
@@ -220,7 +207,6 @@ func (s *DockerSuite) TestCommitWithHostBindMount(c *check.C) {
220 220
 	}
221 221
 
222 222
 	imageID = strings.Trim(imageID, "\r\n")
223
-	defer deleteImages(imageID)
224 223
 
225 224
 	cmd = exec.Command(dockerBinary, "run", "bindtest", "true")
226 225
 
... ...
@@ -248,7 +234,6 @@ func (s *DockerSuite) TestCommitChange(c *check.C) {
248 248
 		c.Fatal(imageId, err)
249 249
 	}
250 250
 	imageId = strings.Trim(imageId, "\r\n")
251
-	defer deleteImages(imageId)
252 251
 
253 252
 	expected := map[string]string{
254 253
 		"Config.ExposedPorts": "map[8080/tcp:{}]",
... ...
@@ -274,7 +259,6 @@ func (s *DockerSuite) TestCommitMergeConfigRun(c *check.C) {
274 274
 	id := strings.TrimSpace(out)
275 275
 
276 276
 	dockerCmd(c, "commit", `--run={"Cmd": ["cat", "/tmp/foo"]}`, id, "commit-test")
277
-	defer deleteImages("commit-test")
278 277
 
279 278
 	out, _ = dockerCmd(c, "run", "--name", name, "commit-test")
280 279
 	if strings.TrimSpace(out) != "testing" {
... ...
@@ -259,7 +259,6 @@ func (s *DockerSuite) TestCreateLabels(c *check.C) {
259 259
 
260 260
 func (s *DockerSuite) TestCreateLabelFromImage(c *check.C) {
261 261
 	imageName := "testcreatebuildlabel"
262
-	defer deleteImages(imageName)
263 262
 	_, err := buildImage(imageName,
264 263
 		`FROM busybox
265 264
 		LABEL k1=v1 k2=v2`,
... ...
@@ -144,7 +144,6 @@ func (s *DockerSuite) TestEventsContainerEventsSinceUnixEpoch(c *check.C) {
144 144
 
145 145
 func (s *DockerSuite) TestEventsImageUntagDelete(c *check.C) {
146 146
 	name := "testimageevents"
147
-	defer deleteImages(name)
148 147
 	_, err := buildImage(name,
149 148
 		`FROM scratch
150 149
 		MAINTAINER "docker"`,
... ...
@@ -180,8 +179,6 @@ func (s *DockerSuite) TestEventsImagePull(c *check.C) {
180 180
 	since := daemonTime(c).Unix()
181 181
 	testRequires(c, Network)
182 182
 
183
-	defer deleteImages("hello-world")
184
-
185 183
 	pullCmd := exec.Command(dockerBinary, "pull", "hello-world")
186 184
 	if out, _, err := runCommandWithOutput(pullCmd); err != nil {
187 185
 		c.Fatalf("pulling the hello-world image from has failed: %s, %v", out, err)
... ...
@@ -12,8 +12,6 @@ import (
12 12
 func (s *DockerSuite) TestExportContainerAndImportImage(c *check.C) {
13 13
 	containerID := "testexportcontainerandimportimage"
14 14
 
15
-	defer deleteImages("repo/testexp:v1")
16
-
17 15
 	runCmd := exec.Command(dockerBinary, "run", "-d", "--name", containerID, "busybox", "true")
18 16
 	out, _, err := runCommandWithOutput(runCmd)
19 17
 	if err != nil {
... ...
@@ -51,8 +49,6 @@ func (s *DockerSuite) TestExportContainerAndImportImage(c *check.C) {
51 51
 func (s *DockerSuite) TestExportContainerWithOutputAndImportImage(c *check.C) {
52 52
 	containerID := "testexportcontainerwithoutputandimportimage"
53 53
 
54
-	defer deleteImages("repo/testexp:v1")
55
-
56 54
 	runCmd := exec.Command(dockerBinary, "run", "-d", "--name", containerID, "busybox", "true")
57 55
 	out, _, err := runCommandWithOutput(runCmd)
58 56
 	if err != nil {
... ...
@@ -14,7 +14,6 @@ import (
14 14
 // sort is not predictable it doesn't always fail.
15 15
 func (s *DockerSuite) TestBuildHistory(c *check.C) {
16 16
 	name := "testbuildhistory"
17
-	defer deleteImages(name)
18 17
 	_, err := buildImage(name, `FROM busybox
19 18
 RUN echo "A"
20 19
 RUN echo "B"
... ...
@@ -85,7 +84,6 @@ func (s *DockerSuite) TestHistoryNonExistentImage(c *check.C) {
85 85
 
86 86
 func (s *DockerSuite) TestHistoryImageWithComment(c *check.C) {
87 87
 	name := "testhistoryimagewithcomment"
88
-	defer deleteImages(name)
89 88
 
90 89
 	// make a image through docker commit <container id> [ -m messages ]
91 90
 	//runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "echo", "foo")
... ...
@@ -26,9 +26,6 @@ func (s *DockerSuite) TestImagesEnsureImageIsListed(c *check.C) {
26 26
 }
27 27
 
28 28
 func (s *DockerSuite) TestImagesOrderedByCreationDate(c *check.C) {
29
-	defer deleteImages("order:test_a")
30
-	defer deleteImages("order:test_c")
31
-	defer deleteImages("order:test_b")
32 29
 	id1, err := buildImage("order:test_a",
33 30
 		`FROM scratch
34 31
 		MAINTAINER dockerio1`, true)
... ...
@@ -80,9 +77,6 @@ func (s *DockerSuite) TestImagesFilterLabel(c *check.C) {
80 80
 	imageName1 := "images_filter_test1"
81 81
 	imageName2 := "images_filter_test2"
82 82
 	imageName3 := "images_filter_test3"
83
-	defer deleteImages(imageName1)
84
-	defer deleteImages(imageName2)
85
-	defer deleteImages(imageName3)
86 83
 	image1ID, err := buildImage(imageName1,
87 84
 		`FROM scratch
88 85
 		 LABEL match me`, true)
... ...
@@ -130,7 +124,6 @@ func (s *DockerSuite) TestImagesFilterLabel(c *check.C) {
130 130
 
131 131
 func (s *DockerSuite) TestImagesFilterSpaceTrimCase(c *check.C) {
132 132
 	imageName := "images_filter_test"
133
-	defer deleteImages(imageName)
134 133
 	buildImage(imageName,
135 134
 		`FROM scratch
136 135
 		 RUN touch /test/foo
... ...
@@ -189,7 +182,6 @@ func (s *DockerSuite) TestImagesEnsureDanglingImageOnlyListedOnce(c *check.C) {
189 189
 		c.Fatalf("error tagging foobox: %s", err)
190 190
 	}
191 191
 	imageId := stringid.TruncateID(strings.TrimSpace(out))
192
-	defer deleteImages(imageId)
193 192
 
194 193
 	// overwrite the tag, making the previous image dangling
195 194
 	cmd = exec.Command(dockerBinary, "tag", "-f", "busybox", "foobox")
... ...
@@ -197,7 +189,6 @@ func (s *DockerSuite) TestImagesEnsureDanglingImageOnlyListedOnce(c *check.C) {
197 197
 	if err != nil {
198 198
 		c.Fatalf("error tagging foobox: %s", err)
199 199
 	}
200
-	defer deleteImages("foobox")
201 200
 
202 201
 	cmd = exec.Command(dockerBinary, "images", "-q", "-f", "dangling=true")
203 202
 	out, _, err = runCommandWithOutput(cmd)
... ...
@@ -27,7 +27,6 @@ func (s *DockerSuite) TestImportDisplay(c *check.C) {
27 27
 		c.Fatalf("display is messed up: %d '\\n' instead of 1:\n%s", n, out)
28 28
 	}
29 29
 	image := strings.TrimSpace(out)
30
-	defer deleteImages(image)
31 30
 
32 31
 	runCmd = exec.Command(dockerBinary, "run", "--rm", image, "true")
33 32
 	out, _, err = runCommandWithOutput(runCmd)
... ...
@@ -560,7 +560,6 @@ func (s *DockerSuite) TestPsListContainersFilterExited(c *check.C) {
560 560
 
561 561
 func (s *DockerSuite) TestPsRightTagName(c *check.C) {
562 562
 	tag := "asybox:shmatest"
563
-	defer deleteImages(tag)
564 563
 	if out, err := exec.Command(dockerBinary, "tag", "busybox", tag).CombinedOutput(); err != nil {
565 564
 		c.Fatalf("Failed to tag image: %s, out: %q", err, out)
566 565
 	}
... ...
@@ -13,7 +13,6 @@ func (s *DockerSuite) TestPullImageWithAliases(c *check.C) {
13 13
 	defer setupRegistry(c)()
14 14
 
15 15
 	repoName := fmt.Sprintf("%v/dockercli/busybox", privateRegistryURL)
16
-	defer deleteImages(repoName)
17 16
 
18 17
 	repos := []string{}
19 18
 	for _, tag := range []string{"recent", "fresh"} {
... ...
@@ -25,7 +24,6 @@ func (s *DockerSuite) TestPullImageWithAliases(c *check.C) {
25 25
 		if out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "tag", "busybox", repo)); err != nil {
26 26
 			c.Fatalf("Failed to tag image %v: error %v, output %q", repos, err, out)
27 27
 		}
28
-		defer deleteImages(repo)
29 28
 		if out, err := exec.Command(dockerBinary, "push", repo).CombinedOutput(); err != nil {
30 29
 			c.Fatalf("Failed to push image %v: error %v, output %q", repo, err, string(out))
31 30
 		}
... ...
@@ -61,7 +59,6 @@ func (s *DockerSuite) TestPullVerified(c *check.C) {
61 61
 	// unless keychain is manually updated to contain the daemon's sign key.
62 62
 
63 63
 	verifiedName := "hello-world"
64
-	defer deleteImages(verifiedName)
65 64
 
66 65
 	// pull it
67 66
 	expected := "The image you are pulling has been verified"
... ...
@@ -88,8 +85,6 @@ func (s *DockerSuite) TestPullVerified(c *check.C) {
88 88
 func (s *DockerSuite) TestPullImageFromCentralRegistry(c *check.C) {
89 89
 	testRequires(c, Network)
90 90
 
91
-	defer deleteImages("hello-world")
92
-
93 91
 	pullCmd := exec.Command(dockerBinary, "pull", "hello-world")
94 92
 	if out, _, err := runCommandWithOutput(pullCmd); err != nil {
95 93
 		c.Fatalf("pulling the hello-world image from the registry has failed: %s, %v", out, err)
... ...
@@ -22,7 +22,6 @@ func (s *DockerSuite) TestPushBusyboxImage(c *check.C) {
22 22
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
23 23
 		c.Fatalf("image tagging failed: %s, %v", out, err)
24 24
 	}
25
-	defer deleteImages(repoName)
26 25
 
27 26
 	pushCmd := exec.Command(dockerBinary, "push", repoName)
28 27
 	if out, _, err := runCommandWithOutput(pushCmd); err != nil {
... ...
@@ -77,12 +76,10 @@ func (s *DockerSuite) TestPushMultipleTags(c *check.C) {
77 77
 	if out, _, err := runCommandWithOutput(tagCmd1); err != nil {
78 78
 		c.Fatalf("image tagging failed: %s, %v", out, err)
79 79
 	}
80
-	defer deleteImages(repoTag1)
81 80
 	tagCmd2 := exec.Command(dockerBinary, "tag", "busybox", repoTag2)
82 81
 	if out, _, err := runCommandWithOutput(tagCmd2); err != nil {
83 82
 		c.Fatalf("image tagging failed: %s, %v", out, err)
84 83
 	}
85
-	defer deleteImages(repoTag2)
86 84
 
87 85
 	pushCmd := exec.Command(dockerBinary, "push", repoName)
88 86
 	if out, _, err := runCommandWithOutput(pushCmd); err != nil {
... ...
@@ -97,7 +94,6 @@ func (s *DockerSuite) TestPushInterrupt(c *check.C) {
97 97
 	if out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "tag", "busybox", repoName)); err != nil {
98 98
 		c.Fatalf("image tagging failed: %s, %v", out, err)
99 99
 	}
100
-	defer deleteImages(repoName)
101 100
 
102 101
 	pushCmd := exec.Command(dockerBinary, "push", repoName)
103 102
 	if err := pushCmd.Start(); err != nil {
... ...
@@ -87,7 +87,6 @@ func (s *DockerSuite) TestRmContainerOrphaning(c *check.C) {
87 87
 
88 88
 	// build first dockerfile
89 89
 	img1, err := buildImage(img, dockerfile1, true)
90
-	defer deleteImages(img1)
91 90
 	if err != nil {
92 91
 		c.Fatalf("Could not build image %s: %v", img, err)
93 92
 	}
... ...
@@ -447,7 +447,6 @@ func (s *DockerSuite) TestRunCreateVolumesInSymlinkDir(c *check.C) {
447 447
 	if _, err := buildImage(name, dockerFile, false); err != nil {
448 448
 		c.Fatal(err)
449 449
 	}
450
-	defer deleteImages(name)
451 450
 
452 451
 	out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-v", "/test/test", name))
453 452
 	if err != nil {
... ...
@@ -604,7 +603,6 @@ func (s *DockerSuite) TestRunCreateVolume(c *check.C) {
604 604
 // Note that this bug happens only with symlinks with a target that starts with '/'.
605 605
 func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
606 606
 	image := "docker-test-createvolumewithsymlink"
607
-	defer deleteImages(image)
608 607
 
609 608
 	buildCmd := exec.Command(dockerBinary, "build", "-t", image, "-")
610 609
 	buildCmd.Stdin = strings.NewReader(`FROM busybox
... ...
@@ -644,7 +642,6 @@ func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
644 644
 // Tests that a volume path that has a symlink exists in a container mounting it with `--volumes-from`.
645 645
 func (s *DockerSuite) TestRunVolumesFromSymlinkPath(c *check.C) {
646 646
 	name := "docker-test-volumesfromsymlinkpath"
647
-	defer deleteImages(name)
648 647
 
649 648
 	buildCmd := exec.Command(dockerBinary, "build", "-t", name, "-")
650 649
 	buildCmd.Stdin = strings.NewReader(`FROM busybox
... ...
@@ -1746,7 +1743,6 @@ func (s *DockerSuite) TestRunState(c *check.C) {
1746 1746
 // Test for #1737
1747 1747
 func (s *DockerSuite) TestRunCopyVolumeUidGid(c *check.C) {
1748 1748
 	name := "testrunvolumesuidgid"
1749
-	defer deleteImages(name)
1750 1749
 	_, err := buildImage(name,
1751 1750
 		`FROM busybox
1752 1751
 		RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1772,7 +1768,6 @@ func (s *DockerSuite) TestRunCopyVolumeUidGid(c *check.C) {
1772 1772
 // Test for #1582
1773 1773
 func (s *DockerSuite) TestRunCopyVolumeContent(c *check.C) {
1774 1774
 	name := "testruncopyvolumecontent"
1775
-	defer deleteImages(name)
1776 1775
 	_, err := buildImage(name,
1777 1776
 		`FROM busybox
1778 1777
 		RUN mkdir -p /hello/local && echo hello > /hello/local/world`,
... ...
@@ -1794,7 +1789,6 @@ func (s *DockerSuite) TestRunCopyVolumeContent(c *check.C) {
1794 1794
 
1795 1795
 func (s *DockerSuite) TestRunCleanupCmdOnEntrypoint(c *check.C) {
1796 1796
 	name := "testrunmdcleanuponentrypoint"
1797
-	defer deleteImages(name)
1798 1797
 	if _, err := buildImage(name,
1799 1798
 		`FROM busybox
1800 1799
 		ENTRYPOINT ["echo"]
... ...
@@ -2349,7 +2343,6 @@ func (s *DockerSuite) TestRunCreateVolumeEtc(c *check.C) {
2349 2349
 }
2350 2350
 
2351 2351
 func (s *DockerSuite) TestVolumesNoCopyData(c *check.C) {
2352
-	defer deleteImages("dataimage")
2353 2352
 	if _, err := buildImage("dataimage",
2354 2353
 		`FROM busybox
2355 2354
 		 RUN mkdir -p /foo
... ...
@@ -2430,7 +2423,6 @@ func (s *DockerSuite) TestRunVolumesCleanPaths(c *check.C) {
2430 2430
 		true); err != nil {
2431 2431
 		c.Fatal(err)
2432 2432
 	}
2433
-	defer deleteImages("run_volumes_clean_paths")
2434 2433
 
2435 2434
 	cmd := exec.Command(dockerBinary, "run", "-v", "/foo", "-v", "/bar/", "--name", "dark_helmet", "run_volumes_clean_paths")
2436 2435
 	if out, _, err := runCommandWithOutput(cmd); err != nil {
... ...
@@ -131,7 +131,6 @@ func (s *DockerSuite) TestSaveSingleTag(c *check.C) {
131 131
 	repoName := "foobar-save-single-tag-test"
132 132
 
133 133
 	tagCmd := exec.Command(dockerBinary, "tag", "busybox:latest", fmt.Sprintf("%v:latest", repoName))
134
-	defer deleteImages(repoName)
135 134
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
136 135
 		c.Fatalf("failed to tag repo: %s, %v", out, err)
137 136
 	}
... ...
@@ -157,7 +156,6 @@ func (s *DockerSuite) TestSaveImageId(c *check.C) {
157 157
 	repoName := "foobar-save-image-id-test"
158 158
 
159 159
 	tagCmd := exec.Command(dockerBinary, "tag", "emptyfs:latest", fmt.Sprintf("%v:latest", repoName))
160
-	defer deleteImages(repoName)
161 160
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
162 161
 		c.Fatalf("failed to tag repo: %s, %v", out, err)
163 162
 	}
... ...
@@ -264,7 +262,6 @@ func (s *DockerSuite) TestSaveMultipleNames(c *check.C) {
264 264
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
265 265
 		c.Fatalf("failed to tag repo: %s, %v", out, err)
266 266
 	}
267
-	defer deleteImages(repoName + "-one")
268 267
 
269 268
 	// Make two images
270 269
 	tagCmd = exec.Command(dockerBinary, "tag", "emptyfs:latest", fmt.Sprintf("%v-two:latest", repoName))
... ...
@@ -272,7 +269,6 @@ func (s *DockerSuite) TestSaveMultipleNames(c *check.C) {
272 272
 	if err != nil {
273 273
 		c.Fatalf("failed to tag repo: %s, %v", out, err)
274 274
 	}
275
-	defer deleteImages(repoName + "-two")
276 275
 
277 276
 	out, _, err = runCommandPipelineWithOutput(
278 277
 		exec.Command(dockerBinary, "save", fmt.Sprintf("%v-one", repoName), fmt.Sprintf("%v-two:latest", repoName)),
... ...
@@ -311,9 +307,7 @@ func (s *DockerSuite) TestSaveRepoWithMultipleImages(c *check.C) {
311 311
 	tagBar := repoName + ":bar"
312 312
 
313 313
 	idFoo := makeImage("busybox:latest", tagFoo)
314
-	defer deleteImages(idFoo)
315 314
 	idBar := makeImage("busybox:latest", tagBar)
316
-	defer deleteImages(idBar)
317 315
 
318 316
 	deleteImages(repoName)
319 317
 
... ...
@@ -358,7 +352,6 @@ func (s *DockerSuite) TestSaveDirectoryPermissions(c *check.C) {
358 358
 	os.Mkdir(extractionDirectory, 0777)
359 359
 
360 360
 	defer os.RemoveAll(tmpDir)
361
-	defer deleteImages(name)
362 361
 	_, err = buildImage(name,
363 362
 		`FROM busybox
364 363
 	RUN adduser -D user && mkdir -p /opt/a/b && chown -R user:user /opt/a
... ...
@@ -18,9 +18,6 @@ func (s *DockerSuite) TestTagUnprefixedRepoByName(c *check.C) {
18 18
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
19 19
 		c.Fatal(out, err)
20 20
 	}
21
-
22
-	deleteImages("testfoobarbaz")
23
-
24 21
 }
25 22
 
26 23
 // tagging an image by ID in a new unprefixed repo should work
... ...
@@ -36,9 +33,6 @@ func (s *DockerSuite) TestTagUnprefixedRepoByID(c *check.C) {
36 36
 	if out, _, err = runCommandWithOutput(tagCmd); err != nil {
37 37
 		c.Fatal(out, err)
38 38
 	}
39
-
40
-	deleteImages("testfoobarbaz")
41
-
42 39
 }
43 40
 
44 41
 // ensure we don't allow the use of invalid repository names; these tag operations should fail
... ...
@@ -104,8 +98,6 @@ func (s *DockerSuite) TestTagExistedNameWithoutForce(c *check.C) {
104 104
 	if err == nil || !strings.Contains(out, "Conflict: Tag test is already set to image") {
105 105
 		c.Fatal("tag busybox busybox:test should have failed,because busybox:test is existed")
106 106
 	}
107
-	deleteImages("busybox:test")
108
-
109 107
 }
110 108
 
111 109
 // tag an image with an existed tag name with -f option should work
... ...
@@ -122,8 +114,6 @@ func (s *DockerSuite) TestTagExistedNameWithForce(c *check.C) {
122 122
 	if out, _, err := runCommandWithOutput(tagCmd); err != nil {
123 123
 		c.Fatal(out, err)
124 124
 	}
125
-	deleteImages("busybox:test")
126
-
127 125
 }
128 126
 
129 127
 // ensure tagging using official names works
... ...
@@ -396,6 +396,55 @@ func deleteAllContainers() error {
396 396
 	return nil
397 397
 }
398 398
 
399
+var protectedImages = map[string]struct{}{}
400
+
401
+func init() {
402
+	out, err := exec.Command(dockerBinary, "images").CombinedOutput()
403
+	if err != nil {
404
+		panic(err)
405
+	}
406
+	lines := strings.Split(string(out), "\n")[1:]
407
+	for _, l := range lines {
408
+		if l == "" {
409
+			continue
410
+		}
411
+		fields := strings.Fields(l)
412
+		imgTag := fields[0] + ":" + fields[1]
413
+		protectedImages[imgTag] = struct{}{}
414
+	}
415
+}
416
+
417
+func deleteAllImages() error {
418
+	out, err := exec.Command(dockerBinary, "images").CombinedOutput()
419
+	if err != nil {
420
+		return err
421
+	}
422
+	lines := strings.Split(string(out), "\n")[1:]
423
+	var imgs []string
424
+	for _, l := range lines {
425
+		if l == "" {
426
+			continue
427
+		}
428
+		fields := strings.Fields(l)
429
+		imgTag := fields[0] + ":" + fields[1]
430
+		if _, ok := protectedImages[imgTag]; !ok {
431
+			if fields[0] == "<none>" {
432
+				imgs = append(imgs, fields[2])
433
+				continue
434
+			}
435
+			imgs = append(imgs, imgTag)
436
+		}
437
+	}
438
+	if len(imgs) == 0 {
439
+		return nil
440
+	}
441
+	args := append([]string{"rmi", "-f"}, imgs...)
442
+	if err := exec.Command(dockerBinary, args...).Run(); err != nil {
443
+		return err
444
+	}
445
+	return nil
446
+}
447
+
399 448
 func getPausedContainers() (string, error) {
400 449
 	getPausedContainersCmd := exec.Command(dockerBinary, "ps", "-f", "status=paused", "-q", "-a")
401 450
 	out, exitCode, err := runCommandWithOutput(getPausedContainersCmd)