mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-23 02:51:55 +00:00
Expand all image references before passing to containerd reference.Parse
Short references without domains will now fail parsing on recent versions of Go as net/url parser is more strict. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
parent
3be6466e00
commit
da533297c1
@ -168,37 +168,50 @@ func uniqueServices(m Moby) error {
|
||||
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 {
|
||||
if m.Kernel.Image != "" {
|
||||
r, err := reference.Parse(m.Kernel.Image)
|
||||
r, err := reference.Parse(referenceExpand(m.Kernel.Image))
|
||||
if err != nil {
|
||||
return fmt.Errorf("extract kernel image reference: %v", err)
|
||||
}
|
||||
m.Kernel.ref = &r
|
||||
}
|
||||
for _, ii := range m.Init {
|
||||
r, err := reference.Parse(ii)
|
||||
r, err := reference.Parse(referenceExpand(ii))
|
||||
if err != nil {
|
||||
return fmt.Errorf("extract on boot image reference: %v", err)
|
||||
}
|
||||
m.initRefs = append(m.initRefs, &r)
|
||||
}
|
||||
for _, image := range m.Onboot {
|
||||
r, err := reference.Parse(image.Image)
|
||||
r, err := reference.Parse(referenceExpand(image.Image))
|
||||
if err != nil {
|
||||
return fmt.Errorf("extract on boot image reference: %v", err)
|
||||
}
|
||||
image.ref = &r
|
||||
}
|
||||
for _, image := range m.Onshutdown {
|
||||
r, err := reference.Parse(image.Image)
|
||||
r, err := reference.Parse(referenceExpand(image.Image))
|
||||
if err != nil {
|
||||
return fmt.Errorf("extract on shutdown image reference: %v", err)
|
||||
}
|
||||
image.ref = &r
|
||||
}
|
||||
for _, image := range m.Services {
|
||||
r, err := reference.Parse(image.Image)
|
||||
r, err := reference.Parse(referenceExpand(image.Image))
|
||||
if err != nil {
|
||||
return fmt.Errorf("extract service image reference: %v", err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user