Skip to content

Releases: containerd/stargz-snapshotter

v0.6.0

12 May 06:44
cb2f52a

Choose a tag to compare

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

    • Add GC when unmounting snapshots (#309)
    • Improve memory consumption (#294)
    • Add request_timeout_sec option for making request timeout configurable in slow NW (#317)
  • estargz library

    • Add support of compressed input blobs to estargz.Build (#304)
  • Test/release pipeline

    • Remove unused cind target from Dockerfile (#295)
    • Switch to v2 configuration file format of containerd (#302)
    • Remove unnecessary linter config (#297)
  • 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.5 and wordpress:5.7 to ghcr.io/stargz-containers (#303)
    • Bump dependencies (Go to 1.16, containerd to 1.5.0, etc) (#312, #313, #299, etc)

v0.5.0

22 Mar 03:21
17b648d

Choose a tag to compare

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 userxattr overlayfs option) (#290), thanks @AkihiroSuda
    • Add check if snapshotter is supported during starting up of the plugin (#282)
    • Add --version option to containerd-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 nerdctl in CI (#273)

v0.4.1

12 Feb 09:40
d1bde75

Choose a tag to compare

This release fixes go.mod to point to the proper version of github.com/containerd/stargz-snapshotter/estargz(#266). Removing unused util/positionwatcher package also comes (#265).

v0.4.0

12 Feb 01:34
bdc018f

Choose a tag to compare

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

    • Refactor the optimizer based on containerd (#240)
    • Fix ctr-remote's subcommands don't override ctr's default (#250)
  • Stargz Snapshotter

    • Print mount error in the log output (#252)
  • nativeconverter

    • Enable to resume conversion (#246)
  • Test/release pipeline

    • Strip go binary by default (#255)
    • Make sure the snapshotter is up-and-running during test (#256)
    • Add tests with the latest unreleased (a.k.a master) containerd (#257, #263)
    • Release cross builds (#260)
    • Eliminate the need to specify replace directive in the consumer's go.mod (#261)
  • Docs and dependencies

    • Bump Go to 1.15 (#243, #245)
    • Update containerd to v1.5.0-beta.0.0.20210122062454-5a66c2ae5cec (#247)
    • Update images used in benchmarking (#248)

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

20 Jan 08:26
8f544b4

Choose a tag to compare

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 and ctr-remote image convert don't support workload-based optimization which ctr-remote image optimize supports.
  • In the futural release, ctr-remote image optimize (currently based on runc) will also be refactored based on nativeconverter 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)
  • 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)
  • ctr-remote image optimize

    • Refactored the structure of ctr-remote i optimize (#198, #199)
    • Added --wait-on-signal option for enabling the user to fully control container termination during optimization (#192) (thanks to @mc256)
    • Added --record-out option for dumping out monitor log to a file (#222)
  • Docs and dependencies

    • Clarified the location of TOC digest annotation in eStargz spec (#211)
    • Allowed KinD image built by non- BuildKit builders (#232)
    • Bumping up dependencies (#197)
    • README.md: fix a wrong image tag (#191)
    • Fixed typos on docs (#233) (thanks to @fahedouch)

v0.2.0

09 Dec 08:29
08ad6ae

Choose a tag to compare

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

27 Nov 12:45
9c13063

Choose a tag to compare

This is the first release of Stargz Snapshotter.