Learn LXC (Linux Containers / system container) from the basics to production-grade: skill pre-requisites & environment setup, historical background & why you need it, core concepts & main architecture, installation & kernel verification, creating your first container, privileged vs unprivileged containers, bridge veth & NAT networking, cgroups resource limits, rootfs images & snapshots storage, snapshot & clone, systemd autostart & service management, bind & mount host paths, containers in Proxmox VE, AppArmor SELinux & seccomp, capabilities & device control, user namespaces & id mapping, security & CVEs, LXC 7.0 LTS & latest features, performance tuning & large scale, the LXD Incus & Proxmox ecosystem, monitoring & logging, roadmap & community, up to alternative ecosystems & final reflections across 23 episodes total.
Before touching lxc-create, you need to master the Linux CLI, user/permission concepts, and basic networking (bridge, veth). This episode walks you through preparing a Linux host with a modern kernel, installing the lxc package (LXC 7.0 LTS) along with its tooling, and verifying that the entire environment is ready for the 23-episode series ahead.

This episode reviews the history of LXC from its initiation by IBM and kernel developers in 2008 to its governance under Linux Containers. You'll also understand why system containers are needed: far lighter than VMs, sharing the kernel, starting up in seconds, and requiring no hypervisor.

This episode breaks down the anatomy of LXC: namespaces (PID, mount, network, UTS, IPC, user) as isolation, cgroups (cgroup2) as resource limits, plus the liblxc components, CLI tooling, and the configuration directory structure that make up a container.

This episode walks you through installing the lxc 7.0 LTS package on Ubuntu plus alternatives on other distributions, getting to know the lxc-* tools and templates, then verifying the kernel with lxc-checkconfig so all required features (namespaces, cgroups, overlayfs) are active.

A historic moment: this episode guides you through creating your first container with lxc-create and the download template, checking its status with lxc-ls and lxc-info, then starting it with lxc-start and getting inside it via lxc-attach, lxc-console, and lxc-execute.

This episode compares the two container modes: privileged, which is fast but risky because root inside it equals root on the host, and unprivileged, which uses user namespaces and idmapping (subuid/subgid) so it's safe for multi-tenant environments.

This episode breaks down LXC networking: the default lxcbr0 bridge with NAT, veth pairs connecting containers to the bridge, configuration in /etc/lxc/default.conf and lxc-usernet, the none/veth/macvlan/phys network modes, and setting static IPs or DHCP.

This episode teaches container resource limiting via cgroup2: lxc.cgroup2.memory.max for memory and lxc.cgroup2.cpu.max for CPU, plus verification with lxc-cgroup (legacy) and systemd-cgls on the host.

This episode breaks down LXC storage: the dir, btrfs, ZFS, LVM, and loop backends along with lxc-create --bdev/--fstype; then image management via the download template, cloning with lxc-copy, and snapshots with lxc-snapshot.

This episode dives into LXC snapshots and clones: taking a snapshot with lxc-snapshot, listing them with -L, then cloning containers with lxc-copy — full copy for independence and -s (snapshot clone) which is disk-efficient with the btrfs/zfs backends.
