diff --git a/image/tarexport/save.go b/image/tarexport/save.go index 0fb5986b72bb3..5b0adef515c67 100644 --- a/image/tarexport/save.go +++ b/image/tarexport/save.go @@ -58,7 +58,7 @@ func (l *tarexporter) parseNames(names []string) (desc map[image.ID]*imageDescri } }() - addAssoc := func(id image.ID, ref reference.Named) error { + addAssoc := func(id image.ID, refs []reference.Named) error { if _, ok := imgDescr[id]; !ok { descr := &imageDescriptor{} if err := l.takeLayerReference(id, descr); err != nil { @@ -67,13 +67,13 @@ func (l *tarexporter) parseNames(names []string) (desc map[image.ID]*imageDescri imgDescr[id] = descr } - if ref != nil { + for _, ref := range refs { if _, ok := ref.(reference.Canonical); ok { - return nil + continue } tagged, ok := reference.TagNameOnly(ref).(reference.NamedTagged) if !ok { - return nil + continue } for _, t := range imgDescr[id].refs { @@ -117,7 +117,7 @@ func (l *tarexporter) parseNames(names []string) (desc map[image.ID]*imageDescri if reference.IsNameOnly(namedRef) { assocs := l.rs.ReferencesByName(namedRef) for _, assoc := range assocs { - if err := addAssoc(image.IDFromDigest(assoc.ID), assoc.Ref); err != nil { + if err := addAssoc(image.IDFromDigest(assoc.ID), []reference.Named{assoc.Ref}); err != nil { return nil, err } } @@ -126,7 +126,8 @@ func (l *tarexporter) parseNames(names []string) (desc map[image.ID]*imageDescri if err != nil { return nil, err } - if err := addAssoc(imgID, nil); err != nil { + refs := l.rs.References(imgID.Digest()) + if err := addAssoc(imgID, refs); err != nil { return nil, err } } @@ -136,7 +137,7 @@ func (l *tarexporter) parseNames(names []string) (desc map[image.ID]*imageDescri if err != nil { return nil, err } - if err := addAssoc(image.IDFromDigest(id), namedRef); err != nil { + if err := addAssoc(image.IDFromDigest(id), []reference.Named{namedRef}); err != nil { return nil, err }