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