You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
Tini - 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.
|
|
|
|
|
|
|
|
|
|
|
|
Using Tini
|
|
|
|
----------
|
|
|
|
|
|
|
|
Add Tini to your container, and make it executable.
|
|
|
|
|
|
|
|
It's a very small file (10KB range). All Tini depends on is libc.
|
|
|
|
|
|
|
|
Once you've added Tini, use it like so:
|
|
|
|
|
|
|
|
tini -- your_program and its args
|
|
|
|
|
|
|
|
Note that you *can* skip the `--` above if your program only accepts
|
|
|
|
positional arguments, but it's best to get used to using it.
|
|
|
|
|
|
|
|
If you try to use positional arguments with Tini without using `--`, you'll
|
|
|
|
get an error similar to:
|
|
|
|
|
|
|
|
./tini: invalid option -- 'c'
|
|
|
|
|
|
|
|
|
|
|
|
Understanding Tini
|
|
|
|
------------------
|
|
|
|
|
|
|
|
After spawning your process, Tini will wait for signals and forward those
|
|
|
|
to the child process (except for `SIGCHLD` and `SIGKILL`, of course).
|
|
|
|
|
|
|
|
Besides, Tini will reap potential zombie processes every second.
|
|
|
|
|
|
|
|
|
|
|
|
Debugging
|
|
|
|
---------
|
|
|
|
|
|
|
|
If something isn't just like you expect, consider increasing the verbosity
|
|
|
|
level (up to 3):
|
|
|
|
|
|
|
|
tini -v -- bash -c 'exit 1'
|
|
|
|
tini -vv -- true
|
|
|
|
tini -vvv -- pwd
|