Skip to content
containerd 1.0.0-alpha2

With another week comes another alpha release. With this release, we have
focused on increasing overall quality and consistency across the code base.
Several new tests have been added, along with attention to refactoring in
various subsystems to match current needs.

Unfortunately, we had to break some interfaces to achieve these goals. See the
section on Upgrading for details.

Again, please download the binaries provided and kick the tires. Please report
issues through the https://github.com/containerd/containerd/issues. Your
feedback is extremely important at this stage, so please don't be bashful about
letting us know what you think.

Upgrading

Some backwards incompatible changes have been made to the GRPC API and the
snapshotter storage format. See the sections on Events and Snapshotters for more details.

To upgrade, you'll need to clear out the containerd root, which defaults to
`/var/lib/containerd/`. All containers, images and metadata will be lost, if
you do this. If this is a problem, please reach out and we can work out a
migration script. If such a change was done from a production release, a
migration script would have been provided.

Also, make sure to update your clients to the latest version that picks up the
new definition for the events service. This change would not be accepted in a
full released version.

Events

After dealing with a few deadlock issues, the events subsystem has been
completely refactored to match the existing use cases. Specifically, a lot of
cruft around the original design, based on Go's context package has been
removed. The use of go-events has been cleaned up to ensure correct
subscription and distribution of events, in addition to ensuring correct
teardown.

The nomenclature has also been updated to better reflect familiar "publish" and
"subscribe" models. If you closely examine #1246, you'll see that the usage of
the `Publisher` interface is much simpler than the `WithTopic` approach. This
should allow us to add events to more subsystems.

The GRPC API for the Events service was updated to bring the service inline
with these changes. Post and Stream have been replaced with Publish and
Subscribe, respectively. Clients will have to be updated to use the new API
endpoints.

After these changes, adding proper filter support should be more
straightforward.

See a615a6fe for details.

Snapshotter

Previously, snapshots had an attribute `Readonly` that was only valid for
`Active` snapshots. After looking at various conditionals, snapshot behavior
and usage, we found that these snapshots were better represented as a discrete
type, known as a "view snapshot".

Unfortunately, we've add to break compatibility with the existing storage
format to correctly enumerate the snapshot types. Users will have to remove the
old storage and start from the scratch.

See 863784f9 for details.

Tar

Tars with duplicated symlinks in disparate layers are now handled correctly.

See afec478b for details.

- Windows support
- snapshot command now supports "commit"
- More testing

Windows Support

Progress on supporting windows has received a major boost. Windows integration
has been refactored to more closely follow existing changes throughout
containerd.

Commands

A new command has been added to `ctr snapshot` to allow committing of active
snapshots. The help output has been reordered to be alphabetical.

Changes

856b0384 Merge pull request #1253 from stevvooe/alpha2
997a1b5a release: prepare for v1.0.0-alpha2
b84817a2 Merge pull request #1246 from stevvooe/events-refactor
03623285 Merge pull request #1248 from dmcgowan/snapshot-storage-kind-test
366ebfd6 Merge pull request #1249 from dmcgowan/client-rename-with-rootfs
c7cc6ad2 Add root mounts to task info
73bec3ed client: rename rootfs to snapshot in "With" functions
a615a6fe events: refactor event distribution
6012f504 Update storage kind test
9434bf9e Merge pull request #1236 from stevvooe/snapshot-column-kind
050c7d24 Merge pull request #1247 from darrenstahlmsft/revendorMicrosoft
cec6331e Revendor hcsshim and go-winio
1251413a Merge pull request #1245 from dmcgowan/archive-more-tar-fixes
afec478b Update tar path resolution
863784f9 snapshot: replace "readonly" with View snapshot type
a9ab45fb Merge pull request #1241 from stevvooe/allow-resumable-upload
bfe747da Merge pull request #1242 from mlaventure/appveyor-no-coverage-only-master
f5bd8bbb Merge pull request #1243 from crosbymichael/reg-diff-urls
a3769f88 Panic when registering the same type but diff urls
219c3e39 Disable coverage tests on Windows CI
2eaac710 Only run Windows CI on master branch
d0e396aa metadata: defer ingest lock to backend
c52523c4 Merge pull request #1238 from crosbymichael/reg-specs
f98b2979 Merge pull request #1239 from crosbymichael/roadmap
ba577f71 Merge pull request #1227 from tossmilestone/fix-comment-typo
becf0015 Replace roadmap with link to milestones
b7e0101b Merge pull request #1228 from dmcgowan/content-testsuite
228f7d45 Register spec types in client
8e1591bd Call upload status tests
bb3c9c59 Rename content/fs to content/local
938f3185 Add content test suite
44236524 Move content store implementation
9b53b8b6 Merge pull request #1237 from WeiZhang555/remove-hardcoded-str
adeec483 Replace hardcoded debug address with const var
856c351f Improve the comment
4118a256 Merge pull request #1234 from dmcgowan/update-logrus
14912932 Update dependencies for logrus rename
1d2a079f update to github.com/sirupsen/logrus v1.0.0
dd7642fc Merge pull request #1196 from mlaventure/update-windows-runtime
a2df6d1a Merge pull request #1141 from ijc/rootfsPropagation
0f6959a2 Merge pull request #1160 from darkowlzz/1082-snapshot-commit
a6211858 Merge pull request #1179 from AkihiroSuda/makefile-i
aeab9355 Fix vet errors
eb4e0b5f Add AppVeyor configuration
e3fcde69 Fix deadlock in events service
5ea5fbdf Fix deadlock in TestContainerExec if `process.Wait()` fails
d4e780d7 Ensure tasks are started when running tests
3df07cbc Cancel io if task is deleted without being started
8e12d1fc ctr: Allow deleting a container in the Created state
4d14bfd8 go-winio: Don't increment the wait count if the file is closing
7f786cf0 go-winio: Prevent Data Race when accessing closing
db1b0a2a Update go-winio to v0.4.3
651aaff7 Update integration test to support windows
79d04ded Make integration a bit more verbose
b2d9db2e windows: Use runtime event topic constants
5c8e0efb windows: Add servicing code
4bb9ac28 Sort ctr commands alphabetically
d0166c42 Register content command with ctr
d10c62d4 Wrap typeurl returned errors with the provided url/type
5fd004a1 Update vendoring
546f0451 Update errdefs.ErrInvalidArgument message
674b460d Move typeurl registrations to runtime package
a4aaa09c Update ctr so it works again on windows
61fbd231 windows: Refactor whole code
fc82e149 windows: Move runtime options out of the spec field
acf863a0 windows: Rely on the OCI specs instead of custom type
bff040d0 windows: Ensure pids are not reused if active
d42cb88b Loop umount'ing rootfs until there are no more mounts
d63d2ecf Simplify mount cleanup on failure by using defer
300f0831 Cleanup mounts if we fail to mount one element of rootfs
8b365117 containerd-shim: Do not remount root MS_SLAVE
912ddbae cmd/ctr: add commit command to snapshot
b6dbbd33 Fix typo error in Protobuild.toml
7822819f .travis.yml: run go build -i
f72e97db Makefile: `go build -i` -> `go build`