Pull all image aliases for id. Closes #8141.
Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
This commit is contained in:
parent
27567e5593
commit
7d74be162c
3 changed files with 14 additions and 7 deletions
|
@ -152,7 +152,7 @@ progress of your daemonized process.
|
|||
You can detach from the container again (and leave it running) with
|
||||
`CTRL-p CTRL-q` (for a quiet exit), or `CTRL-c` which will send a
|
||||
SIGKILL to the container, or `CTRL-\` to get a stacktrace of the
|
||||
Docker client when it quits. When you detach from the container's
|
||||
Docker client when it quits. When you detach from the container's
|
||||
process the exit code will be returned to the client.
|
||||
|
||||
To stop a container, use `docker stop`.
|
||||
|
@ -965,10 +965,13 @@ To download a particular image, or set of images (i.e., a repository),
|
|||
use `docker pull`:
|
||||
|
||||
$ sudo docker pull debian
|
||||
# will pull only the debian:latest image and its intermediate layers
|
||||
# will pull the debian:latest image, its intermediate layers
|
||||
# and any aliases of the same id
|
||||
$ sudo docker pull debian:testing
|
||||
# will pull only the image named debian:testing and any intermediate layers
|
||||
# it is based on. (Typically the empty `scratch` image, a MAINTAINER layer,
|
||||
# will pull the image named ubuntu:trusty, ubuntu:14.04
|
||||
# which is an alias of the same image
|
||||
# and any intermediate layers it is based on.
|
||||
# (Typically the empty `scratch` image, a MAINTAINER layer,
|
||||
# and the un-tarred base).
|
||||
$ sudo docker pull --all-tags centos
|
||||
# will pull all the images from the centos repository
|
||||
|
|
|
@ -106,6 +106,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
|
|||
|
||||
log.Debugf("Registering tags")
|
||||
// If no tag has been specified, pull them all
|
||||
var imageId string
|
||||
if askedTag == "" {
|
||||
for tag, id := range tagsList {
|
||||
repoData.ImgList[id].Tag = tag
|
||||
|
@ -116,6 +117,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
|
|||
if !exists {
|
||||
return fmt.Errorf("Tag %s not found in repository %s", askedTag, localName)
|
||||
}
|
||||
imageId = id
|
||||
repoData.ImgList[id].Tag = askedTag
|
||||
}
|
||||
|
||||
|
@ -217,7 +219,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
|
|||
|
||||
}
|
||||
for tag, id := range tagsList {
|
||||
if askedTag != "" && tag != askedTag {
|
||||
if askedTag != "" && id != imageId {
|
||||
continue
|
||||
}
|
||||
if err := s.Set(localName, tag, id, true); err != nil {
|
||||
|
|
|
@ -6,6 +6,8 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
// FIXME: we need a test for pulling all aliases for an image (issue #8141)
|
||||
|
||||
// pulling an image from the central registry should work
|
||||
func TestPullImageFromCentralRegistry(t *testing.T) {
|
||||
pullCmd := exec.Command(dockerBinary, "pull", "scratch")
|
||||
|
@ -13,9 +15,9 @@ func TestPullImageFromCentralRegistry(t *testing.T) {
|
|||
errorOut(err, t, fmt.Sprintf("%s %s", out, err))
|
||||
|
||||
if err != nil || exitCode != 0 {
|
||||
t.Fatal("pulling the busybox image from the registry has failed")
|
||||
t.Fatal("pulling the scratch image from the registry has failed")
|
||||
}
|
||||
logDone("pull - pull busybox")
|
||||
logDone("pull - pull scratch")
|
||||
}
|
||||
|
||||
// pulling a non-existing image from the central registry should return a non-zero exit code
|
||||
|
|
Loading…
Reference in a new issue