So you're running a Linux desktop, and it's getting cluttered. There's that weird library you installed ages ago that messes up your package dependencies every upgrade, proprietary software that was last updated for the Ubuntu version you ran three years ago, and then of course you also need a bunch of Python, Go, and Ruby dev environments that all come with their own package managers. Wouldn't it be nice to have a cleaner, saner, more compartmentalised setup?
LXC is the underrated wallflower of Linux container runtimes. It's been around for longer than just about everything else, it's stable, it has a decent userland, and it comes with neat features that make it saner and more secure than its contenders — but very few people use it to its full potential.
In this tutorial, I'll show you how to run an arbitrary number of LXC containers on your desktop, all configured with Ansible so that whenever a container starts to look even remotely off, you can just throw it away and start over in minutes. You'll learn how to run unprivileged containers under your own user context, use a shared /home directory across all your containers (and make it work), run containerized X applications that talk to your host X and sound server, and selectively make host resources (such as a webcam, or USB printer) available in your container. I've been using this approach on my own Ubuntu desktop for a couple of years, on a daily basis.
To make the most of this tutorial, please come with a desktop that already has LXC and a current version of Ansible installed.
Florian is an expert in open source cloud, distributed storage, and high availability platforms. He is an active member of the OpenStack and Ceph communities, and is the founder and CEO of hastexo, a professional services company with a strong OpenStack and Ceph focus. In addition, Florian and the team at hastexo build self-paced, hands-on training platforms based on Open edX.