Releases: containerd/stargz-snapshotter
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:
nativeconverter
andctr-remote image convert
don't support workload-based optimization whichctr-remote image optimize
supports.- In the futural release,
ctr-remote image optimize
(currently based on runc) will also be refactored based onnativeconverter
and containerd.
Notable Changes
-
Stargz Snapshotter
- Added default path to load config (
/etc/containerd-stargz-grpc/config.toml
) (#214, #229) (thanks to @ohkinozomu) - Added
fetching_timeout
config option for making timeout for fetching chunks configurable (#228) - Added
max_concurrency
config option for making the concurrency of background fetching configurable (#237) (thanks to @mc256) - Fixed the order of directory entries returned from
getdents
was non-deterministic (#242)
- Added default path to load config (
-
estargz
library- Added
WithCompressionLevel
option for specifying gzip compression level of eStargz (#201) - Added
WithPrioritizedFiles
option 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-optimize
option 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-only
option is deprecated. Instead, use--no-optimize
option 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-remote
v0.2.0 (and newer) is still pullable (but non-lazy) by eStargz-agnostic runtimes (e.g. Docker). - eStargz images provided by
ctr-remote
v0.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-remote
v0.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.