A tiny but valid `init` for containers
.Tini is the simplest init you could think of.
All Tini does is spawn a single child (Tini is meant to be run in a container), and wait for it to exit all the while reaping zombies and performing signal forwarding.
Why Tini?
Using Tini has several benefits:
It protects you from software that accidentally creates zombie processes, which can (over time!) starve your entire system for PIDs (and make it unusable).
It ensures that the default signal handlers work for the software you run in your Docker image. For example, with Tini, SIGTERM properly terminates your process even if you didn't explicitly install a signal handler for it.
It does so completely transparently! Docker images that work without Tini will work with Tini without any changes.
If you'd like more detail on why this is useful, review this issue discussion: What is advantage of Tini? - https://github.com/krallin/tini/issues/8