Merge pull request #3420 from justincormack/fix-parse-new-go

Expand all image references before passing to containerd reference.Parse
This commit is contained in:
Rolf Neugebauer 2019-10-01 01:30:12 +02:00 committed by GitHub
commit 9a47b294f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -168,37 +168,50 @@ func uniqueServices(m Moby) error {
return nil return nil
} }
// referenceExpand expands "redis" to "docker.io/library/redis" so all images have a full domain
func referenceExpand(ref string) string {
parts := strings.Split(ref, "/")
switch len(parts) {
case 1:
return "docker.io/library/" + ref
case 2:
return "docker.io/" + ref
default:
return ref
}
}
func extractReferences(m *Moby) error { func extractReferences(m *Moby) error {
if m.Kernel.Image != "" { if m.Kernel.Image != "" {
r, err := reference.Parse(m.Kernel.Image) r, err := reference.Parse(referenceExpand(m.Kernel.Image))
if err != nil { if err != nil {
return fmt.Errorf("extract kernel image reference: %v", err) return fmt.Errorf("extract kernel image reference: %v", err)
} }
m.Kernel.ref = &r m.Kernel.ref = &r
} }
for _, ii := range m.Init { for _, ii := range m.Init {
r, err := reference.Parse(ii) r, err := reference.Parse(referenceExpand(ii))
if err != nil { if err != nil {
return fmt.Errorf("extract on boot image reference: %v", err) return fmt.Errorf("extract on boot image reference: %v", err)
} }
m.initRefs = append(m.initRefs, &r) m.initRefs = append(m.initRefs, &r)
} }
for _, image := range m.Onboot { for _, image := range m.Onboot {
r, err := reference.Parse(image.Image) r, err := reference.Parse(referenceExpand(image.Image))
if err != nil { if err != nil {
return fmt.Errorf("extract on boot image reference: %v", err) return fmt.Errorf("extract on boot image reference: %v", err)
} }
image.ref = &r image.ref = &r
} }
for _, image := range m.Onshutdown { for _, image := range m.Onshutdown {
r, err := reference.Parse(image.Image) r, err := reference.Parse(referenceExpand(image.Image))
if err != nil { if err != nil {
return fmt.Errorf("extract on shutdown image reference: %v", err) return fmt.Errorf("extract on shutdown image reference: %v", err)
} }
image.ref = &r image.ref = &r
} }
for _, image := range m.Services { for _, image := range m.Services {
r, err := reference.Parse(image.Image) r, err := reference.Parse(referenceExpand(image.Image))
if err != nil { if err != nil {
return fmt.Errorf("extract service image reference: %v", err) return fmt.Errorf("extract service image reference: %v", err)
} }