Skip to content

Commit 2753a5a

Browse files
zhillwagoodman
andauthored
Fix: adds support for slightly nonstandard mediaType string in docker image layers (#487)
* fix: adds support for application/vnd.docker.image.rootfs.diff.tar.zstd layer mediaType Signed-off-by: Zach Hill <[email protected]> * add tests Signed-off-by: Alex Goodman <[email protected]> --------- Signed-off-by: Zach Hill <[email protected]> Signed-off-by: Alex Goodman <[email protected]> Co-authored-by: Alex Goodman <[email protected]>
1 parent d1026d8 commit 2753a5a

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

pkg/image/layer.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import (
2222
"github.com/anchore/stereoscope/pkg/filetree"
2323
)
2424

25-
const SingularitySquashFSLayer = "application/vnd.sylabs.sif.layer.v1.squashfs"
25+
const (
26+
SingularitySquashFSLayer = "application/vnd.sylabs.sif.layer.v1.squashfs"
27+
BuildKitZstdCompressedLayer = "application/vnd.docker.image.rootfs.diff.tar.zstd"
28+
)
2629

2730
// Layer represents a single layer within a container image.
2831
type Layer struct {
@@ -101,7 +104,8 @@ func (l *Layer) Read(catalog *FileCatalog, idx int, uncompressedLayersCacheDir s
101104
types.OCILayerZStd,
102105
types.DockerLayer,
103106
types.DockerForeignLayer,
104-
types.DockerUncompressedLayer:
107+
types.DockerUncompressedLayer,
108+
BuildKitZstdCompressedLayer:
105109

106110
err := l.readStandardImageLayer(idx, uncompressedLayersCacheDir, tree)
107111
if err != nil {

pkg/image/layer_test.go

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,41 @@ func TestRead(t *testing.T) {
7979
wantErrContents: "no media type for you",
8080
},
8181
{
82-
name: "no error",
82+
name: "support OCI layer",
83+
mediaType: v1Types.OCILayer,
84+
},
85+
{
86+
name: "support OCI uncompressed layer",
87+
mediaType: v1Types.OCIUncompressedLayer,
88+
},
89+
{
90+
name: "support OCI restricted layer",
91+
mediaType: v1Types.OCIRestrictedLayer,
92+
},
93+
{
94+
name: "support OCI uncompressed restricted layer",
95+
mediaType: v1Types.OCIUncompressedRestrictedLayer,
96+
},
97+
{
98+
name: "support OCI zstd layer",
99+
mediaType: v1Types.OCILayerZStd,
100+
},
101+
{
102+
name: "support docker tar.gz layer",
83103
mediaType: v1Types.DockerLayer,
84104
},
105+
{
106+
name: "support docker foreign layer",
107+
mediaType: v1Types.DockerForeignLayer,
108+
},
109+
{
110+
name: "support docker uncompressed layer",
111+
mediaType: v1Types.DockerUncompressedLayer,
112+
},
113+
{
114+
name: "support docker tar.zstd layer",
115+
mediaType: BuildKitZstdCompressedLayer,
116+
},
85117
}
86118

87119
for _, tt := range tests {

0 commit comments

Comments
 (0)