Skip to content
containerd 1.0.0-beta.2

Welcome to the release of containerd v1.0.0-beta.2!

*This is a pre-release of containerd*

This release rounds out much of the remaining feature set for the 1.0 release
time frame. In addition to a large number of bugfixes and utility additions,
services and methods have been added to the GRPC API to meet production use
cases.  The highlight is garbage collection, along with database migrations,
plugin introspection and rich PID listing.

Please try out the release binaries and report any issues at
https://github.com/containerd/containerd/issues.

Garbage Collection

Full garbage collection support for cleaning up content, snapshots and metadata
for containerd resources. The implementation is based on well-known concurrent
mark and sweep and the approach allows for extensibility in collection
policies.

The GC is triggered `Container.Delete and Image.Delete. Note that images may
need to be re-pulled for proper support.

Introspection API

The new introspection API allows for querying the state of containerd. The
`Plugins` method lists the state and exports of all initialized plugins in use
in a containerd instance.

```console
$ ctr plugins
TYPE                            ID             PLATFORM       STATUS
io.containerd.content.v1        content        -              ok
io.containerd.metadata.v1       bolt           -              ok
io.containerd.differ.v1         walking        linux/amd64    ok
io.containerd.grpc.v1           containers     -              ok
io.containerd.grpc.v1           content        -              ok
io.containerd.grpc.v1           diff           -              ok
io.containerd.grpc.v1           events         -              ok
io.containerd.grpc.v1           healthcheck    -              ok
io.containerd.grpc.v1           images         -              ok
io.containerd.grpc.v1           namespaces     -              ok
io.containerd.snapshotter.v1    btrfs          linux/amd64    error
io.containerd.snapshotter.v1    overlayfs      linux/amd64    ok
io.containerd.grpc.v1           snapshots      -              ok
io.containerd.monitor.v1        cgroups        linux/amd64    ok
io.containerd.runtime.v1        linux          linux/amd64    ok
io.containerd.grpc.v1           tasks          -              ok
io.containerd.grpc.v1           version        -              ok
```

Rich ListPIDs

Listing PIDs through the task service can now provide runtime specific metadata
through the API. This is particularly interesting on the windows platform. The
following is an example of a Windows container `ps` output:

```console
$ ctr tasks ps <container-id>
PID       INFO
3716      {ImageName:smss.exe CreatedAt:2017-10-10T17:51:45.1552607Z KernelTime_100Ns:156250 MemoryCommitBytes:348160 MemoryWorkingSetPrivateBytes:217088 MemoryWorkingSetSharedBytes:946176 ProcessID:3716 UserTime_100Ns:0}
5404      {ImageName:csrss.exe CreatedAt:2017-10-10T17:51:45.1848844Z KernelTime_100Ns:0 MemoryCommitBytes:606208 MemoryWorkingSetPrivateBytes:339968 MemoryWorkingSetSharedBytes:1560576 ProcessID:5404 UserTime_100Ns:0}
3628      {ImageName:wininit.exe CreatedAt:2017-10-10T17:51:45.1974386Z KernelTime_100Ns:156250 MemoryCommitBytes:983040 MemoryWorkingSetPrivateBytes:610304 MemoryWorkingSetSharedBytes:3448832 ProcessID:3628 UserTime_100Ns:0}
8576      {ImageName:services.exe CreatedAt:2017-10-10T17:51:45.2091635Z KernelTime_100Ns:468750 MemoryCommitBytes:2048000 MemoryWorkingSetPrivateBytes:1437696 MemoryWorkingSetSharedBytes:4182016 ProcessID:8576 UserTime_100Ns:0}
7892      {ImageName:lsass.exe CreatedAt:2017-10-10T17:51:45.2177712Z KernelTime_100Ns:937500 MemoryCommitBytes:2666496 MemoryWorkingSetPrivateBytes:1982464 MemoryWorkingSetSharedBytes:7561216 ProcessID:7892 UserTime_100Ns:312500}
6384      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:45.3676107Z KernelTime_100Ns:468750 MemoryCommitBytes:1896448 MemoryWorkingSetPrivateBytes:1277952 MemoryWorkingSetSharedBytes:4730880 ProcessID:6384 UserTime_100Ns:156250}
4904      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:45.5431743Z KernelTime_100Ns:312500 MemoryCommitBytes:1781760 MemoryWorkingSetPrivateBytes:1331200 MemoryWorkingSetSharedBytes:4952064 ProcessID:4904 UserTime_100Ns:0}
2092      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:45.5838844Z KernelTime_100Ns:156250 MemoryCommitBytes:2486272 MemoryWorkingSetPrivateBytes:2117632 MemoryWorkingSetSharedBytes:5668864 ProcessID:2092 UserTime_100Ns:312500}
6576      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:45.727607Z KernelTime_100Ns:156250 MemoryCommitBytes:1818624 MemoryWorkingSetPrivateBytes:1417216 MemoryWorkingSetSharedBytes:6684672 ProcessID:6576 UserTime_100Ns:156250}
2412      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:46.0427889Z KernelTime_100Ns:468750 MemoryCommitBytes:5570560 MemoryWorkingSetPrivateBytes:3915776 MemoryWorkingSetSharedBytes:5963776 ProcessID:2412 UserTime_100Ns:0}
5472      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:46.0827893Z KernelTime_100Ns:312500 MemoryCommitBytes:2625536 MemoryWorkingSetPrivateBytes:1908736 MemoryWorkingSetSharedBytes:7532544 ProcessID:5472 UserTime_100Ns:312500}
8756      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:46.1108672Z KernelTime_100Ns:312500 MemoryCommitBytes:1843200 MemoryWorkingSetPrivateBytes:1466368 MemoryWorkingSetSharedBytes:4612096 ProcessID:8756 UserTime_100Ns:0}
1508      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:46.1522136Z KernelTime_100Ns:2812500 MemoryCommitBytes:4816896 MemoryWorkingSetPrivateBytes:3600384 MemoryWorkingSetSharedBytes:9281536 ProcessID:1508 UserTime_100Ns:468750}
4612      {ImageName:svchost.exe CreatedAt:2017-10-10T17:51:46.2212148Z KernelTime_100Ns:937500 MemoryCommitBytes:3063808 MemoryWorkingSetPrivateBytes:2265088 MemoryWorkingSetSharedBytes:8667136 ProcessID:4612 UserTime_100Ns:156250}
5936      {ImageName:CExecSvc.exe CreatedAt:2017-10-10T17:51:46.2224031Z KernelTime_100Ns:0 MemoryCommitBytes:983040 MemoryWorkingSetPrivateBytes:737280 MemoryWorkingSetSharedBytes:3723264 ProcessID:5936 UserTime_100Ns:0}
4416      {ImageName:cmd.exe CreatedAt:2017-10-10T17:51:46.5943846Z KernelTime_100Ns:0 MemoryCommitBytes:1564672 MemoryWorkingSetPrivateBytes:356352 MemoryWorkingSetSharedBytes:2174976 ProcessID:4416 UserTime_100Ns:0}
8700      {ImageName:powershell.exe CreatedAt:2017-10-10T17:51:46.6120645Z KernelTime_100Ns:2343750 MemoryCommitBytes:24522752 MemoryWorkingSetPrivateBytes:19853312 MemoryWorkingSetSharedBytes:27156480 ProcessID:8700 UserTime_100Ns:10156250}
```

Migrations

A lightweight migration framework is now part of containerd. This allows us to
safely evolve the schema between releases with the groundwork laid early.

As part of this release, a migration will be run to add back references in
support of garbage collection.

Contributors

* Ace-Tang
* Akihiro Suda
* Akim Demaille
* Allen Sun
* Daniel, Dao Quang Minh
* Derek McGowan
* Jess Valarezo
* Kenfe-Mickaël Laventure
* Lantao Liu
* Mathieu Pasquet
* Michael Crosby
* Phil Estes
* Stephen J Day
* Tobias Klauser
* Yanqiang Miao

Changes

* a543c937 Merge pull request #1630 from stevvooe/beta2
* 683ed979 release: prepare 1.0.0-beta.2
* 1fe31c7e Merge pull request #1628 from crosbymichael/release-tool
* 769d9e16 add release tool to generate releases
* 587f2524 Merge pull request #1563 from dmcgowan/gc-alpha
* 3cc75915 Merge pull request #1627 from jessvalarezo/task-remove-cast
* 1e69de18 Remove ProcessInfo cast
* b5152f27 Merge pull request #1626 from jessvalarezo/windows-changes
* 830e0ea3 Change hcsshimopts to hcsshimtypes package
* ffb03c4f Add checkpoint and userns gc labels
* de7b2818 Update services to call garbage collection
* 17471d55 Metadata garbage collection
* 7884707c Add reference labels to snapshots and content
* 551579b3 Merge pull request #1621 from dmcgowan/refactor-diff
* 64a96aab Abort newly created references on error
* 69e7e7fa Add error wrapping for client checkpoint errors
* d9db1d11 Refactor differ into separate package
* 60960e1c Merge pull request #1597 from stevvooe/introspection-service
* 0e72ce5c services/introspection: implement plugin reporting
* 49814646 plugin: allow declaring a plugin depends on all others
* 8508e825 plugin: refactor plugin system to support initialization reporting
* fe52d936 errdefs: use status package for mapping errors
* d8bd6b70 plugin: allow querying plugin graph to be re-entrant
* 363d692f api/services: define the introspection API
* 12c79cc0 Merge pull request #1604 from jessvalarezo/windows-listpids
* 061c7192 ListPids returns process ID and other info
* 96725a5a Merge pull request #1620 from mlaventure/runc-io-id
* c807ba83 Allow setting the uid & gid of the io pipes
* 1ea8ac41 Merge pull request #1617 from crosbymichael/2cgroup
* d7864eb7 Use namespace in default cgroup path
* 72bb45ac Merge pull request #1603 from mlaventure/fix-windows-flaky-tests
* cfa87567 windows: Create init process with task
* ad526645 windows: Fix a few races
* b2e34823 Merge pull request #1584 from miaoyq/fix-mount-lookup-err
* d7c46118 Ensure getting the correct mountinfo corresponds to path
* a8426ed9 Merge pull request #1609 from crosbymichael/attach-docs
* 6c3f3937 Merge pull request #1611 from stevvooe/address-cgroup-merge-conflicty
* 77e5f655 metrics/cgroups: handle error on call to cgroup
* bbb01ee1 Add docs around multiple attach
* 987fcd12 Merge pull request #1598 from Random-Liu/fix-load-task
* 67bbfc5d Merge pull request #1605 from dmcgowan/metadata-db-documentation
* e4defbcb Add documentation for metadata database
* 6f351f0a Merge pull request #1586 from mathieui/postmortem-stats
* d92f6eea Allow blocking and non-blocking metrics collection
* ed519bb5 Collect cgroup stats one last time before exit
* 8558b98e Merge pull request #1582 from dmcgowan/metadata-db-object
* 7f657ce3 Add database migrations
* 28ca8f05 Fix task load.
* 7c4bca59 Merge pull request #1600 from AkihiroSuda/defaultspec
* d7b0e522 spec: set MaskedPaths and ReadOnlyPaths by default
* 72a3a019 Merge pull request #1595 from crosbymichael/container-lock
* 28882fdd Merge pull request #1589 from mlaventure/shim-no-newns
* fa9e9bdf Fetch current container info before operations
* 8d892a65 Update metadata plugin initialization
* 2ab70f21 Add content and snapshot store references
* 447a0a94 Add children bucket to back reference snapshots
* 56c1b79a Create metadata db object
* acba0f50 Merge pull request #1594 from akimd/akim/clean
* ec43dc2b Merge pull request #1592 from AkihiroSuda/workdir2
* 26d4c2c2 Add an option to prevent putting the shim in a new mount namespace
* 0ae9d8fa Merge pull request #1567 from stevvooe/image-check-function
* 8ceeeed4 style: move definition for consistency
* b26e2e78 ctr run: add --cwd
* f6d88927 Merge pull request #1583 from stevvooe/image-storage-validation
* 698b6d15 metadata: validation and testing of image store
* c555df54 images: support checking status of image content
* 7c9b0eab Merge pull request #1590 from crosbymichael/container-update
* 9e85035f Add container update method
* 1c7a042e Merge pull request #1566 from stevvooe/split-children
* 6b9aafda Merge pull request #1587 from Ace-Tang/remove_blank_line
* 2231de37 Remove a blank line
* 8ded4fe3 Merge pull request #1581 from crosbymichael/lint-2
* 451421b6 Comment more packages to pass go lint
* 33e974ce Merge pull request #1577 from crosbymichael/lint-1
* 2416559f Merge pull request #1580 from tklauser/unix-mkdev-major-minor
* f43b7acf Update files based on go lint
* 579093f1 Merge pull request #1579 from tklauser/vendor-ansiterm
* f01b1391 archive: use Mkdev, Major and Minor functions from golang.org/x/sys/unix
* 727fd599 ctr: remove SIGUNUSED from signal map
* e789135a vendor: update golang.org/x/sys
* acc246e5 Remove stray entry for Azure/go-ansiterm from vendor.conf
* ce6859fd images: provide separated children function for images
* 16bf8236 Merge pull request #1570 from AkihiroSuda/oci-runtime-readonly
* 27023c7f readonly: pass RW rootfs to runtime, and let the runtime remount it as RO
* 70b353df Merge pull request #1551 from mlaventure/client-pull-set-labels
* 9f84513b Merge pull request #1571 from allencloud/remove-defaultns-from-Client
* fd44a3ae remove field defaultns from struct Client
* df82159f client: Allow setting image labels on Pull() and Import()
* b24acea2 Merge pull request #1565 from allencloud/fix-potential-panic
* 382dafef fix a potential panic when map is nil
* cc9f58ac Merge pull request #1559 from mlaventure/fix-oor-panic
* cee13ebf Merge pull request #1557 from crosbymichael/console-bump
* cf2c4609 Bump runc with console change for ONLCR
* d026f813 Merge pull request #1562 from AkihiroSuda/ctr-images-q
* ed811896 Update console dep to 84eeaae905fa414d03e07bcd6c8d
* 2a648136 ctr: add `ctr images ls --quiet`
* af2226c9 client: Prevent Out-Of-Range panic in task.Metrics()
* bd1f89b7 Merge pull request #1555 from crosbymichael/client-lint
* 51b9240b Update client to pass go lint
* 1a9d9394 Merge pull request #1558 from mlaventure/dialer-quick-fix
* 357eff82 Merge pull request #1556 from crosbymichael/tests
* c42f56b3 Move unix specific tidbits into dialer_unix.go
* 76a2d1cc State adding tests when submitting changes
* 76bfff39 Merge pull request #1554 from mlaventure/list-images-filters
* 8e447197 Merge pull request #1552 from allencloud/update-docs-and-comments
* 4700968f update docs and comments
* 8f1dd438 client: Allow specifying filters when listing images

Dependency Changes

Previous release can be found at [v1.0.0-beta.1](https://github.com/containerd/containerd/releases/tag/v1.0.0-beta.1)

* b3c048c028ddd789c6f9510c597f8b9c62f25359 -> 633fd07c086ff591adaa2849278764771d791f6f **github.com/containerd/go-runc**
* b28c739c79ce69d017e3691ad3664568d68e95c6 -> 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e **github.com/containerd/console**
* 5933ab4dc4f7caa3a73a1dc141bd11f42b5c9163 -> 9c238e632e80d94f71a067c3deb9b34b1886ef18 **github.com/containerd/cgroups**
* 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce -> 314a259e304ff91bd6985da2a7149bbf91237993 **golang.org/x/sys**
* 593914b8bd5448a93f7c3e4902a03408b6d5c0ce -> 0351df1c5a66838d0c392b4ac4cf9450de844e2d **github.com/opencontainers/runc**