init process¶To enable running multiple processes, containers require process/service management. This is normally provided by some kind of init task (e.g. provided by sysvinit).
There are Docker-compatible replacements for full-fledged @init@s. Unfortunately they require either custom init scripts or service configurations. The process of migration from system provided OpenRC init scripts is time consuming and error prone.
Usage of system's defaultsysvinit is hampered by following shortcomings:
init as PID 1 ends with error code 137:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b755c0f1b1d8 gentoo-base:20220415 "/sbin/init" About a minute ago Exited (137) 9 seconds ago gentoo-base
init process remains running afterwards:# docker-compose top gentoo-base UID PID PPID C STIME TTY TIME CMD ---------------------------------------------------------- root 3510 3489 0 17:40 ? 00:00:00 init [0]
Nevertheless it is possible to use sysvinit as a Docker container init process. Required steps are following: