Skip to content

Commit

Permalink
Merge pull request #128 from matejvasek/sparse-image-podman
Browse files Browse the repository at this point in the history
Better sparse image tar for podman
  • Loading branch information
natalieparellano authored Oct 1, 2021
2 parents 66aea98 + d200acd commit cf7ae41
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions local/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -511,23 +511,30 @@ func (i *Image) doSave() (types.ImageInspect, error) {
return types.ImageInspect{}, err
}

var blankIdx int
var layerPaths []string
for _, path := range i.layerPaths {
if path == "" {
layerPaths = append(layerPaths, "")
continue
}
layerName := fmt.Sprintf("/%x.tar", sha256.Sum256([]byte(path)))
f, err := os.Open(filepath.Clean(path))
if err != nil {
return types.ImageInspect{}, err
}
defer f.Close()
if err := addFileToTar(tw, layerName, f); err != nil {
return types.ImageInspect{}, err
layerName := fmt.Sprintf("blank_%d", blankIdx)
blankIdx++
hdr := &tar.Header{Name: layerName, Mode: 0644, Size: 0}
if err := tw.WriteHeader(hdr); err != nil {
return types.ImageInspect{}, err
}
layerPaths = append(layerPaths, layerName)
} else {
layerName := fmt.Sprintf("/%x.tar", sha256.Sum256([]byte(path)))
f, err := os.Open(filepath.Clean(path))
if err != nil {
return types.ImageInspect{}, err
}
defer f.Close()
if err := addFileToTar(tw, layerName, f); err != nil {
return types.ImageInspect{}, err
}
f.Close()
layerPaths = append(layerPaths, layerName)
}
f.Close()
layerPaths = append(layerPaths, layerName)
}

manifest, err := json.Marshal([]map[string]interface{}{
Expand Down

0 comments on commit cf7ae41

Please sign in to comment.