The last couple of years have seen an increased interest in container-related technologies. When people speak of containers they usually mean process containers. They often view a container as being much more comparable to a single process than to a virtual machine. But this is not the only way that containers can be used. The features that the Linux kernel provides allow for much more, up to running a whole Linux system unmodified inside a single container. For the last couple of years the LXD team has worked on just that: making containers behave much more like a virtual machine. This talk is going to introduce the concept of a system container in depth and touch on some of the more challenging aspects one faces when containerizing a whole init system and not just a single process. We will also show how system containers allow you to do things like running other container runtimes like runC, Docker/Moby, and LXD inside them and allow for device passthrough for GPU and USB devices in a much easier way than actual virtual machines can.
Christian Brauner is a core developer and maintainer of the LXD and LXC projects. He works mostly upstream as part of the Ubuntu Server team on lower-level problems. He's been active in the open source community for a long time and is a frequent speaker at various large Linux events; he is also strongly committed to working in the open, and a strong proponent of Free Software.