All Posts

When a Stranger Syscalls: Quirks of jail(2)

When a Stranger Syscalls: Quirks of jail(2)

runj is an OCI runtime for FreeBSD jails. Until recently, it relied on the jail(8) command to actually set up and manage the jail in the FreeBSD kernel. It had been a to-do item on my list for a long time to migrate to directly-invoking the jail(2) family of syscalls. This is now done, but I learned some new things along the way.

runj 0.2.0 adopts new OCI Runtime Spec 1.3.0 with FreeBSD support

runj 0.2.0 now supports the new OCI Runtime Spec 1.3.0, which includes official FreeBSD support!

Writing Software for Myself

This post is part of the Lobste.rs blog carnival. A while ago I read this blog post “An app can be a home-cooked meal”. It really resonated with me. Later, I realized it’s because I’ve been doing this for a while, just without a name. While I don’t have a ton of home-cooked apps, I have written a few over the years for some different specific reasons.

Hello containerd 2.1

Hello containerd 2.1

containerd 2.1 is here! Delivering new features and improvements, this release also launches our new six-month cadence – just half a year after containerd 2.0.

My KubeCon+CloudNativeCon EU 2025 Schedule

I’ll be speaking at KubeCon EU 2025 in London tomorrow! As I like to do, here’s what I’m thinking of attending at the conference this week.

containerd internals: Images

containerd internals: Images

Welcome to day 4 of our series on containerd internals! Container images are the mechanism that we use to capture a container’s filesystem, distribute it to nodes that will eventually run containers, and ensure that containers start from a known-identical configuration. In many ways, images are the defining characteristic of a containerized system; they are the interaction point for users who want to create a workload and make it repeatable and predictable. Without images, you could still have similar isolation characteristics that are available in containerized systems today, but it would be more difficult to achieve reliable, production-ready, and understandable workloads.

containerd internals: ctr

containerd internals: ctr

Welcome to day 3 of our series on containerd internals! This post will cover ctr, a command-line tool for containerd.

containerd internals blog series for December 2024

containerd internals blog series for December 2024

Derek already announced this on his blog, but I figured I can post here too. This month, a few of the containerd maintainers plan to write a series of blog posts about containerd internals that we think are interesting and not well-known. Our hope through this series is that you’ll find some useful takeaways in operating containerd (and understanding how to debug), integrating with containerd (through our many extension points), contributing to containerd, or even in writing your own projects.

containerd 2.0 (and KubeCon NA 2024)

containerd 2.0 (and KubeCon NA 2024)

The containerd maintainers (including me) are happy to announce the release of containerd 2.0! This is the first major release of containerd since 1.0 was released in 2017, and represents a commitment both to the evolution of the containerd project and continued investment in stability, reliability, and efficiency.

Deprecation Warnings in containerd - Getting Ready for 2.0!

Deprecation Warnings in containerd - Getting Ready for 2.0!

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.