github.com/uriddle/docker@v0.0.0-20210926094723-4072e6aeb013/distribution/pull_v2_windows.go (about) 1 // +build windows 2 3 package distribution 4 5 import ( 6 "encoding/json" 7 "fmt" 8 9 "github.com/docker/distribution/manifest/schema1" 10 "github.com/docker/docker/image" 11 ) 12 13 func detectBaseLayer(is image.Store, m *schema1.Manifest, rootFS *image.RootFS) error { 14 v1img := &image.V1Image{} 15 if err := json.Unmarshal([]byte(m.History[len(m.History)-1].V1Compatibility), v1img); err != nil { 16 return err 17 } 18 if v1img.Parent == "" { 19 return fmt.Errorf("Last layer %q does not have a base layer reference", v1img.ID) 20 } 21 // There must be an image that already references the baselayer. 22 for _, img := range is.Map() { 23 if img.RootFS.BaseLayerID() == v1img.Parent { 24 rootFS.BaseLayer = img.RootFS.BaseLayer 25 return nil 26 } 27 } 28 return fmt.Errorf("Invalid base layer %q", v1img.Parent) 29 }