image_windows.go 1.4 KB

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