github.com/rish1988/moby@v25.0.2+incompatible/daemon/images/image_windows.go (about) 1 package images 2 3 import ( 4 "context" 5 6 "github.com/docker/docker/image" 7 "github.com/docker/docker/layer" 8 "github.com/pkg/errors" 9 ) 10 11 // GetContainerLayerSize returns real size & virtual size 12 func (i *ImageService) GetContainerLayerSize(ctx context.Context, containerID string) (int64, int64, error) { 13 // TODO Windows 14 return 0, 0, nil 15 } 16 17 // GetLayerFolders returns the layer folders from an image RootFS 18 func (i *ImageService) GetLayerFolders(img *image.Image, rwLayer layer.RWLayer, containerID string) ([]string, error) { 19 folders := []string{} 20 rd := len(img.RootFS.DiffIDs) 21 for index := 1; index <= rd; index++ { 22 // FIXME: why does this mutate the RootFS? 23 img.RootFS.DiffIDs = img.RootFS.DiffIDs[:index] 24 if err := image.CheckOS(img.OperatingSystem()); err != nil { 25 return nil, errors.Wrapf(err, "cannot get layerpath for ImageID %s", img.RootFS.ChainID()) 26 } 27 layerPath, err := layer.GetLayerPath(i.layerStore, img.RootFS.ChainID()) 28 if err != nil { 29 return nil, errors.Wrapf(err, "failed to get layer path from graphdriver %s for ImageID %s", i.layerStore, img.RootFS.ChainID()) 30 } 31 // Reverse order, expecting parent first 32 folders = append([]string{layerPath}, folders...) 33 } 34 if rwLayer == nil { 35 return nil, errors.New("RWLayer is unexpectedly nil") 36 } 37 m, err := rwLayer.Metadata() 38 if err != nil { 39 return nil, errors.Wrap(err, "failed to get layer metadata") 40 } 41 return append(folders, m["dir"]), nil 42 }