containerd 2.0 will be the first new major release of containerd since the initial stable release of 1.0 in December, 2017. After six years of iteration, development, and refinement, 2.0 will encapsulate the learning we’ve had building and supporting containerd at large scale (and as the default container runtime for a number of managed container offerings). With that, 2.0 brings some major refactorings of core services (CRI, image management), new functionality (sandbox plugins, transfer plugins, image verifier plugins), improvements (better user namespace support, NRI updates), and removals of deprecated functionality.
Removals of functionality (“breaking changes”) can be challenging to deal with. In some cases, you may have an intentional dependency on a deprecated feature that is being removed. In other cases, you may not know that you have a dependency. For some removals, migration can be straightforward, while for others it may not be.
To help you understand what dependencies you have on deprecated and removed
functionality, we’ve added a
new
ctr deprecations list
command (backed by new data in containerd’s
introspection
service Server
API). These now return usage-based warnings
for deprecated functionality that is being removed in a future version of
containerd. For each warning, you can see:
- What is being removed
- A suggestion for migration
- When it was last used
An example of the output of ctr deprecations list
is given below:
# ctr deprecations list
ID LAST OCCURRENCE MESSAGE
io.containerd.deprecation/pull-schema-1-image 2023-12-29T01:17:21.672915093Z Schema 1 images are deprecated since containerd v1.7 and removed in containerd v2.0. Since containerd v1.7.8, schema 1 images are identified by the "io.containerd.image/converted-docker-schema1" label.
For machine-readability, ctr deprecations list
also accepts a --format=json
flag.
You can find the full set of removals and replacement suggestions on the containerd website. The full set of deprecation warnings first appears in containerd 1.6.27 and 1.7.12; we recommend updating to and using those versions with your normal production workloads prior to attempting to update to 2.0.