Releases: containerd/stargz-snapshotter
v0.6.0
Since this release, lazy pulling of eStargz is possible on CRI-O/Podman using the brand-new Stargz Store plugin. Please refer to our docs for details about installation.
This release also adds changes for better resource efficiency of Stargz Snapshotter, including garbage collection of content cache (#309) and memory consumption improvement (#294).
Notable Changes
-
Stargz Store
- Add Stargz Store for enabling lazy pulling on CRI-O/Podman (#301)
-
Stargz Snapshotter
-
estargz library
- Add support of compressed input blobs to
estargz.Build(#304)
- Add support of compressed input blobs to
-
Test/release pipeline
-
Docs and dependencies
- Add document about installing Stargz Snapshotter for containerd with systemd (#307), thanks @chenk008
- Add document about installing Stargz Store for CRI-O/Podman with systemd (#319)
- Fix typos (#311, #315), thanks @hs0210 and @ilyee
- Add eStargz-formatted
mariadb:10.5andwordpress:5.7to ghcr.io/stargz-containers (#303) - Bump dependencies (Go to 1.16, containerd to 1.5.0, etc) (#312, #313, #299, etc)
v0.5.0
This release comes with enabling stargz snapshotter to be import-ed as a builtin snapshotter plugin, supporting exporting prometheus metrics and rootless support for Ubuntu, Debian and any distro newer than Linux 5.11. For more details about rootless mode, please refer to the doc in nerdctl (containerd/nerdctl#123).
Notable Changes
-
Stargz Snapshotter
- Support importing stargz snapshotter as a builtin plugin (#267)
- Support exporting prometheus metrics (#288)
- Support rootless on Linux > 5.11 (support for
userxattroverlayfs option) (#290), thanks @AkihiroSuda - Add check if snapshotter is supported during starting up of the plugin (#282)
- Add
--versionoption tocontainerd-stargz-grpc(#269) - Refactoring filesystem and cache (#283)
- Use containerd's scope generator function (#278)
-
estargz library
- Support to parse suid/sgid/sticky bits (#286)
-
CI
- Use
nerdctlin CI (#273)
- Use
v0.4.1
v0.4.0
This release refactors ctr-remote image optimize command based on containerd and fanotify. For optimizing images, containerd needs to run but FUSE is no longer needed. Optimized images are stored to containerd, so they can be inspected and pushed to the registry using various ctr/nerdctl commands (e.g. ctr-remote images export, ctr-remote content get, etc.). Please refer to the ctr-remote doc for more details.
This release comes with various test/release pipeline improvements including smaller release binaries, cross-compiled binaries, nightly tests with master version of containerd and go.mod improvement.
Notable Changes
-
ctr-remote image optimize -
Stargz Snapshotter
- Print mount error in the log output (#252)
-
nativeconverter
- Enable to resume conversion (#246)
-
Test/release pipeline
-
Docs and dependencies
Importing Stargz Snapshotter as Go module
Currently, Stargz Snapshotter repository contains two Go modules as the following and both of them need to be imported.
require (
github.com/containerd/stargz-snapshotter v0.4.0
github.com/containerd/stargz-snapshotter/estargz v0.4.0 // indirect
)
Please make sure you import the both of them and they point to the same version (v0.4.0).
v0.3.0
Introduced estargz library for manipulating eStargz layer (#195, #196)
estargz is the Go library for manipulating eStargz layers, based on stargz library by CRFS project (https://github.com/google/crfs/tree/master/stargz). Applications can convert tar blob into eStargz layer with specifying prioritized files and also can unmarshal it into the structured tree format. Because estargz package has its own go.mod, applications outside of this project can import this package with minimal dependencies (i.e. without snapshotter-related nor optimizer-related dependencies).
Leveraging this package, go-containerregistry and crane CLI, Kaniko, ko and nerdctl start to experimentally support creating eStargz recently.
Big thanks to @mattmoor and go-containerregistry community for discussion and contribution for designing this package and expanding its adoption in community.
Introduced nativeconverter library and ctr-remote image convert CLI as containerd-native image converter (#224, #234, #236)
This release introduces brand-new containerd-native image converter library nativeconverter and ctr-remote image convert CLI.
nativeconverter is a high-level image converter library based on estargz package. This package works on containerd and can convert an image stored in containerd content store into eStargz or other formats (e.g. tar). The resulting image will also be stored to containerd content store.
nerdctl supports converting images into eStargz leveraging nativeconverter library.
nerdctl image convert --estargz --oci <SRC> <DST>
ctr-remote image convert is our CLI implementation based on nativeconverter. An image stored in containerd can be converted to eStargz using the following command.
ctr-remote images convert --oci --estargz <SRC> <DST>
Big thanks to @AkihiroSuda for introducing this feature and integrating this to nerdctl.
Note:
nativeconverterandctr-remote image convertdon't support workload-based optimization whichctr-remote image optimizesupports.- In the futural release,
ctr-remote image optimize(currently based on runc) will also be refactored based onnativeconverterand containerd.
Notable Changes
-
Stargz Snapshotter
- Added default path to load config (
/etc/containerd-stargz-grpc/config.toml) (#214, #229) (thanks to @ohkinozomu) - Added
fetching_timeoutconfig option for making timeout for fetching chunks configurable (#228) - Added
max_concurrencyconfig option for making the concurrency of background fetching configurable (#237) (thanks to @mc256) - Fixed the order of directory entries returned from
getdentswas non-deterministic (#242)
- Added default path to load config (
-
estargzlibrary- Added
WithCompressionLeveloption for specifying gzip compression level of eStargz (#201) - Added
WithPrioritizedFilesoption for specifying prioritized files (#206, #212, #216) - Replaced the multierror dependency with a simple error aggregator (#207) (thanks to @mattmoor)
- Added
DiffID()API for exposing uncompressed digest (DiffID) of built eStargz (#208) - Added flexibility for manipulating paths formatted in various ways (e.g. paths prefixed with "/", "./" and "" are handled correctly) (#213, #218)
- Allowed duplicated entries of input tar (#219)
- Fixed stack overflow bug because of the infinite loop (#221)
- Fixed paths aren't handled correctly on Windows (#225) (thanks to @mattmoor)
- Added
-
ctr-remote image optimize -
Docs and dependencies
v0.2.0
Notable Changes
- Fix that hardlink tar entries can come to the invalid position by optimization (#181)
- Fix that
--no-optimizeoption isn't enabled (#185) - Fix that snapshot cannot be referred by multiple containerd namespaces (#188)
- Fix the footer format for making it compatible with RFC1952 (#190)
ctr-remote's--stargz-onlyoption is deprecated. Instead, use--no-optimizeoption for aquiring eStargz image without optimization.
Important Note about compatibility
#190 changed the footer format of eStargz in backward-incompatible way.
eStargz since this release isn't compatible with stargz and eStargz of v0.1.0 (and older).
Stargz Snapshotter v0.1.0 (and older) cannot recognize this v0.2.0 (and newer) eStargz image.
But please note that eStargz of v0.2.0 (and newer) is still compatible with current OCI/Docker images.
Thus:
- eStargz images provided by
ctr-remotev0.2.0 (and newer) is still pullable (but non-lazy) by eStargz-agnostic runtimes (e.g. Docker). - eStargz images provided by
ctr-remotev0.2.0 (and newer) cannot be lazily pulled by the Stargz Snapshotter v0.1.0 (and older). - Stargz Snapshotter v0.2.0 (and newer) can still lazily pull stargz/eStargz provided by
ctr-remotev0.1.0 (and older).
Please upgrade Stargz Snapshotter when you use ctr-remote v0.2.0 (and newer).
v0.1.0
This is the first release of Stargz Snapshotter.