Hello, and welcome to this tutorial!
During this journey you will, hopefully, get a better understanding of what Linux containers are and how they work.
We will achieve this by building a simple container engine together, incrementally, implementing new features as we introduce the necessary kernel primitives.
- how we used to ship software:
- copy-and-paste deployments
- JARs
- VMs?
- ...
- the problems we had:
- "runs on my machine"
- lack of isolation
- containers as the solution
- containers are just an abstraction over some kernel primitives
- this is not necessarily a bad thing!
- the building blocks of a Linux container
- namespaces
- cgroups
- filesystems?
- running a process
- returning the process exit code
- the UTS namespace
- mount namespaces
chroot
vspivot_root
- the
cpuset
cgroup
- the
memory
cgroup
overlay
filesystems- using a loopback device?
- the PID namespace
- mounting the
proc
virtual filesystem to fixps
- bind-mounts
pdeathsig
?- signal handling in Go?
- subreaper?
- mounting the
dev
virtual filesystem