diff --git a/image.go b/image.go index b306dfd956..9d9a64cceb 100644 --- a/image.go +++ b/image.go @@ -368,6 +368,13 @@ func (image *Image) ensureImageDevice(devices DeviceSet) error { return err } + + err = ioutil.WriteFile(path.Join(mountDir, ".docker-id"), []byte(image.ID), 0600) + if err != nil { + _ = devices.RemoveDevice(image.ID) + return err + } + utils.Debugf("Applying layer %s at %s", image.ID, mountDir) err = image.applyLayer(layerPath(root), mountDir) if err != nil { @@ -427,12 +434,14 @@ func (image *Image) Mount(runtime *Runtime, root, rw string, id string) error { return err } + createdDevice := false if !devices.HasDevice(id) { utils.Debugf("Creating device %s for container based on image %s", id, image.ID) err = devices.AddDevice(id, image.ID) if err != nil { return err } + createdDevice = true } utils.Debugf("Mounting container %s at %s for container", id, root) @@ -440,6 +449,15 @@ func (image *Image) Mount(runtime *Runtime, root, rw string, id string) error { if err != nil { return err } + + if createdDevice { + err = ioutil.WriteFile(path.Join(root, ".docker-id"), []byte(id), 0600) + if err != nil { + _ = devices.RemoveDevice(image.ID) + return err + } + } + } return nil }