diff --git a/src/moby/build.go b/src/moby/build.go index 9b5da1a9d..ef8e60ea7 100644 --- a/src/moby/build.go +++ b/src/moby/build.go @@ -388,6 +388,8 @@ func tarAppend(iw *tar.Writer, tr *tar.Reader) error { // this allows inserting metadata into a file in the image func metadata(m Moby, md string) ([]byte, error) { + // Make sure the Image strings are update to date with the refs + updateImages(&m) switch md { case "json": return json.MarshalIndent(m, "", " ") diff --git a/src/moby/config.go b/src/moby/config.go index 13a0cb0dc..49172574e 100644 --- a/src/moby/config.go +++ b/src/moby/config.go @@ -197,6 +197,31 @@ func extractReferences(m *Moby) error { return nil } +func updateImages(m *Moby) error { + if m.Kernel.ref != nil { + m.Kernel.Image = m.Kernel.ref.String() + } + for i, ii := range m.initRefs { + m.Init[i] = ii.String() + } + for _, image := range m.Onboot { + if image.ref != nil { + image.Image = image.ref.String() + } + } + for _, image := range m.Onshutdown { + if image.ref != nil { + image.Image = image.ref.String() + } + } + for _, image := range m.Services { + if image.ref != nil { + image.Image = image.ref.String() + } + } + return nil +} + // NewConfig parses a config file func NewConfig(config []byte) (Moby, error) { m := Moby{}