Merge pull request #23377 from vdemeester/carry-pr-23007
Carry #23007 : Say something useful during docker load
This commit is contained in:
commit
9db33b7646
4 changed files with 59 additions and 4 deletions
|
@ -12,11 +12,12 @@ parent = "smn_cli"
|
|||
|
||||
Usage: docker load [OPTIONS]
|
||||
|
||||
Load an image from a tar archive or STDIN
|
||||
Load an image from a tar archive or STDIN and shows image names or
|
||||
IDs imported.
|
||||
|
||||
--help Print usage
|
||||
-i, --input="" Read from a tar archive file, instead of STDIN. The tarball may be compressed with gzip, bzip, or xz
|
||||
-q, --quiet Suppress the load output. Without this option, a progress bar is displayed.
|
||||
-q, --quiet Suppress the load progress bar but still outputs the imported images
|
||||
|
||||
Loads a tarred repository from a file or the standard input stream.
|
||||
Restores both images and tags.
|
||||
|
@ -24,10 +25,17 @@ Restores both images and tags.
|
|||
$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
$ docker load < busybox.tar.gz
|
||||
# […]
|
||||
Loaded image: busybox:latest
|
||||
$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
busybox latest 769b9341d937 7 weeks ago 2.489 MB
|
||||
$ docker load --input fedora.tar
|
||||
# […]
|
||||
Loaded image: fedora:rawhide
|
||||
# […]
|
||||
Loaded image: fedora:20
|
||||
# […]
|
||||
$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
busybox latest 769b9341d937 7 weeks ago 2.489 MB
|
||||
|
|
|
@ -62,6 +62,8 @@ func (l *tarexporter) Load(inTar io.ReadCloser, outStream io.Writer, quiet bool)
|
|||
}
|
||||
|
||||
var parentLinks []parentLink
|
||||
var imageIDsStr string
|
||||
var imageRefCount int
|
||||
|
||||
for _, m := range manifest {
|
||||
configPath, err := safePath(tmpDir, m.Config)
|
||||
|
@ -109,7 +111,9 @@ func (l *tarexporter) Load(inTar io.ReadCloser, outStream io.Writer, quiet bool)
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
imageIDsStr += fmt.Sprintf("Loaded image ID: %s\n", imgID)
|
||||
|
||||
imageRefCount = 0
|
||||
for _, repoTag := range m.RepoTags {
|
||||
named, err := reference.ParseNamed(repoTag)
|
||||
if err != nil {
|
||||
|
@ -120,6 +124,8 @@ func (l *tarexporter) Load(inTar io.ReadCloser, outStream io.Writer, quiet bool)
|
|||
return fmt.Errorf("invalid tag %q", repoTag)
|
||||
}
|
||||
l.setLoadedTag(ref, imgID, outStream)
|
||||
outStream.Write([]byte(fmt.Sprintf("Loaded image: %s\n", ref)))
|
||||
imageRefCount++
|
||||
}
|
||||
|
||||
parentLinks = append(parentLinks, parentLink{imgID, m.Parent})
|
||||
|
@ -134,6 +140,10 @@ func (l *tarexporter) Load(inTar io.ReadCloser, outStream io.Writer, quiet bool)
|
|||
}
|
||||
}
|
||||
|
||||
if imageRefCount == 0 {
|
||||
outStream.Write([]byte(imageIDsStr))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -350,3 +350,33 @@ func (s *DockerSuite) TestSaveLoadParents(c *check.C) {
|
|||
inspectOut = inspectField(c, idFoo, "Parent")
|
||||
c.Assert(inspectOut, checker.Equals, "")
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestSaveLoadNoTag(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
|
||||
name := "saveloadnotag"
|
||||
|
||||
_, err := buildImage(name, "FROM busybox\nENV foo=bar", true)
|
||||
c.Assert(err, checker.IsNil, check.Commentf("%v", err))
|
||||
|
||||
id := inspectField(c, name, "Id")
|
||||
|
||||
// Test to make sure that save w/o name just shows imageID during load
|
||||
out, _, err := runCommandPipelineWithOutput(
|
||||
exec.Command(dockerBinary, "save", id),
|
||||
exec.Command(dockerBinary, "load"))
|
||||
c.Assert(err, checker.IsNil, check.Commentf("failed to save and load repo: %s, %v", out, err))
|
||||
|
||||
// Should not show 'name' but should show the image ID during the load
|
||||
c.Assert(out, checker.Not(checker.Contains), "Loaded image: ")
|
||||
c.Assert(out, checker.Contains, "Loaded image ID:")
|
||||
c.Assert(out, checker.Contains, id)
|
||||
|
||||
// Test to make sure that save by name shows that name during load
|
||||
out, _, err = runCommandPipelineWithOutput(
|
||||
exec.Command(dockerBinary, "save", name),
|
||||
exec.Command(dockerBinary, "load"))
|
||||
c.Assert(err, checker.IsNil, check.Commentf("failed to save and load repo: %s, %v", out, err))
|
||||
c.Assert(out, checker.Contains, "Loaded image: "+name+":latest")
|
||||
c.Assert(out, checker.Not(checker.Contains), "Loaded image ID:")
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@ docker-load - Load an image from a tar archive or STDIN
|
|||
# DESCRIPTION
|
||||
|
||||
Loads a tarred repository from a file or the standard input stream.
|
||||
Restores both images and tags.
|
||||
Restores both images and tags. Write image names or IDs imported it
|
||||
standard output stream.
|
||||
|
||||
# OPTIONS
|
||||
**--help**
|
||||
|
@ -23,7 +24,7 @@ Restores both images and tags.
|
|||
Read from a tar archive file, instead of STDIN. The tarball may be compressed with gzip, bzip, or xz.
|
||||
|
||||
**-q**, **--quiet**
|
||||
Suppress the load output. Without this option, a progress bar is displayed.
|
||||
Suppress the load progress bar but still outputs the imported images.
|
||||
|
||||
# EXAMPLES
|
||||
|
||||
|
@ -31,6 +32,11 @@ Restores both images and tags.
|
|||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
busybox latest 769b9341d937 7 weeks ago 2.489 MB
|
||||
$ docker load --input fedora.tar
|
||||
# […]
|
||||
Loaded image: fedora:rawhide
|
||||
# […]
|
||||
Loaded image: fedora:20
|
||||
# […]
|
||||
$ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
busybox latest 769b9341d937 7 weeks ago 2.489 MB
|
||||
|
@ -47,3 +53,4 @@ April 2014, Originally compiled by William Henry (whenry at redhat dot com)
|
|||
based on docker.com source material and internal work.
|
||||
June 2014, updated by Sven Dowideit <SvenDowideit@home.org.au>
|
||||
July 2015 update by Mary Anthony <mary@docker.com>
|
||||
June 2016 update by Vincent Demeester <vincent@sbr.pm>
|
||||
|
|
Loading…
Add table
Reference in a new issue